feat: re-introduce shallow git clones

Making full git clones slows down the kustomize build significantly for big repositories.
This commit is contained in:
Pieter Vincken
2020-06-09 16:35:09 +02:00
parent 546a7386ff
commit b97df057c1

View File

@@ -4,7 +4,6 @@
package git package git
import ( import (
"log"
"os/exec" "os/exec"
"github.com/pkg/errors" "github.com/pkg/errors"
@@ -33,25 +32,36 @@ func ClonerUsingGitExec(repoSpec *RepoSpec) error {
cmd := exec.Command( cmd := exec.Command(
gitProgram, gitProgram,
"clone", "clone",
"--depth=1",
repoSpec.CloneSpec(), repoSpec.CloneSpec(),
repoSpec.Dir.String()) repoSpec.Dir.String())
out, err := cmd.CombinedOutput() _, err = cmd.CombinedOutput()
if err != nil { if err != nil {
log.Printf("Error cloning git repo: %s", out)
return errors.Wrapf( return errors.Wrapf(
err, err,
"trouble cloning git repo %v in %s", "trouble cloning git repo %v in %s",
repoSpec.CloneSpec(), repoSpec.Dir.String()) repoSpec.CloneSpec(), repoSpec.Dir.String())
} }
cmd = exec.Command(
gitProgram,
"fetch",
"--depth=1",
"origin",
repoSpec.Ref)
cmd.Dir = repoSpec.Dir.String()
_, err = cmd.CombinedOutput()
if err != nil {
return errors.Wrapf(err, "trouble fetching %s", repoSpec.Ref)
}
cmd = exec.Command( cmd = exec.Command(
gitProgram, gitProgram,
"checkout", "checkout",
repoSpec.Ref) repoSpec.Ref)
cmd.Dir = repoSpec.Dir.String() cmd.Dir = repoSpec.Dir.String()
out, err = cmd.CombinedOutput() _, err = cmd.CombinedOutput()
if err != nil { if err != nil {
log.Printf("Error checking out ref: %s", out)
return errors.Wrapf(err, "trouble checking out %s", repoSpec.Ref) return errors.Wrapf(err, "trouble checking out %s", repoSpec.Ref)
} }
@@ -62,9 +72,8 @@ func ClonerUsingGitExec(repoSpec *RepoSpec) error {
"--init", "--init",
"--recursive") "--recursive")
cmd.Dir = repoSpec.Dir.String() cmd.Dir = repoSpec.Dir.String()
out, err = cmd.CombinedOutput() _, err = cmd.CombinedOutput()
if err != nil { if err != nil {
log.Printf("Error fetching submodules: %s", out)
return errors.Wrapf(err, "trouble fetching submodules for %s", repoSpec.CloneSpec()) return errors.Wrapf(err, "trouble fetching submodules for %s", repoSpec.CloneSpec())
} }