diff --git a/api/internal/git/cloner.go b/api/internal/git/cloner.go index 63fcaa21e8..e3696db3ef 100644 --- a/api/internal/git/cloner.go +++ b/api/internal/git/cloner.go @@ -4,7 +4,6 @@ package git import ( - "bytes" "log" "os/exec" @@ -34,34 +33,38 @@ func ClonerUsingGitExec(repoSpec *RepoSpec) error { cmd := exec.Command( gitProgram, "clone", - "--depth=1", repoSpec.CloneSpec(), - "-b", - repoSpec.Ref, repoSpec.Dir.String()) - var out bytes.Buffer - cmd.Stdout = &out - cmd.Stderr = &out - err = cmd.Run() + out, err := cmd.CombinedOutput() if err != nil { - log.Printf("Error cloning git repo: %s", out.String()) + log.Printf("Error cloning git repo: %s", out) return errors.Wrapf( err, "trouble cloning git repo %v in %s", repoSpec.CloneSpec(), repoSpec.Dir.String()) } + cmd = exec.Command( + gitProgram, + "checkout", + repoSpec.Ref) + cmd.Dir = repoSpec.Dir.String() + out, err = cmd.CombinedOutput() + if err != nil { + log.Printf("Error checking out ref: %s", out) + return errors.Wrapf(err, "trouble checking out %s", repoSpec.Ref) + } + cmd = exec.Command( gitProgram, "submodule", "update", "--init", "--recursive") - cmd.Stdout = &out - cmd.Stderr = &out cmd.Dir = repoSpec.Dir.String() - err = cmd.Run() + out, err = cmd.CombinedOutput() if err != nil { + log.Printf("Error fetching submodules: %s", out) return errors.Wrapf(err, "trouble fetching submodules for %s", repoSpec.CloneSpec()) } diff --git a/api/loader/getter.go b/api/loader/getter.go index 5e663b9323..9d0e89d901 100644 --- a/api/loader/getter.go +++ b/api/loader/getter.go @@ -60,6 +60,8 @@ func getRemoteTarget(rs *remoteTargetSpec) error { return err } + rs.Dir = filesys.ConfirmedDir(rs.Dir.Join("repo")) + // Get the pwd pwd, err := os.Getwd() if err != nil {