@@ -499,53 +499,60 @@ func (executor *Executor) CloneRepository(env map[string]string) bool {
499
499
return false
500
500
}
501
501
502
- if is_clone_modules {
503
- logUploader .Write ([]byte ("\n Updating submodules..." ))
502
+ if ref .Hash () != plumbing .NewHash (change ) {
503
+ logUploader .Write ([]byte (fmt .Sprintf ("\n HEAD is at %s." , ref .Hash ())))
504
+ logUploader .Write ([]byte (fmt .Sprintf ("\n Hard resetting to %s..." , change )))
504
505
505
506
workTree , err := repo .Worktree ()
506
507
if err != nil {
507
508
logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to get work tree: %s!" , err )))
508
509
return false
509
510
}
510
511
511
- submodules , err := workTree .Submodules ()
512
+ err = workTree .Reset (& git.ResetOptions {
513
+ Commit : plumbing .NewHash (change ),
514
+ Mode : git .HardReset ,
515
+ })
512
516
if err != nil {
513
- logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to get submodules: %s!" , err )))
514
- return false
515
- }
516
-
517
- if err := submodules .Update (& git.SubmoduleUpdateOptions {
518
- Init : true ,
519
- RecurseSubmodules : git .DefaultSubmoduleRecursionDepth ,
520
- }); err != nil {
521
- logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to update submodules: %s!" , err )))
517
+ logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to force reset to %s: %s!" , change , err )))
522
518
return false
523
519
}
524
-
525
- logUploader .Write ([]byte ("\n Sucessfully updated submodules!" ))
526
520
}
527
521
528
- if ref .Hash () != plumbing .NewHash (change ) {
529
- logUploader .Write ([]byte (fmt .Sprintf ("\n HEAD is at %s." , ref .Hash ())))
530
- logUploader .Write ([]byte (fmt .Sprintf ("\n Hard resetting to %s..." , change )))
522
+ if is_clone_modules {
523
+ logUploader .Write ([]byte ("\n Updating submodules..." ))
531
524
532
525
workTree , err := repo .Worktree ()
533
526
if err != nil {
534
527
logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to get work tree: %s!" , err )))
535
528
return false
536
529
}
537
530
538
- err = workTree .Reset (& git.ResetOptions {
539
- Commit : plumbing .NewHash (change ),
540
- Mode : git .HardReset ,
541
- })
531
+ submodules , err := workTree .Submodules ()
542
532
if err != nil {
543
- logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to force reset to %s : %s!" , change , err )))
533
+ logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to get submodules : %s!" , err )))
544
534
return false
545
535
}
536
+
537
+ opts := & git.SubmoduleUpdateOptions {
538
+ Init : true ,
539
+ RecurseSubmodules : git .DefaultSubmoduleRecursionDepth ,
540
+ }
541
+
542
+ for _ , sub := range submodules {
543
+ if err := sub .Update (opts ); err != nil {
544
+ logUploader .Write ([]byte (fmt .Sprintf ("\n Failed to update submodule %q: %s!" ,
545
+ sub .Config ().Name , err )))
546
+ return false
547
+ }
548
+ }
549
+
550
+ logUploader .Write ([]byte ("\n Sucessfully updated submodules!" ))
546
551
}
552
+
547
553
logUploader .Write ([]byte (fmt .Sprintf ("\n Checked out %s on %s branch." , change , branch )))
548
554
logUploader .Write ([]byte ("\n Successfully cloned!" ))
555
+
549
556
return true
550
557
}
551
558
0 commit comments