diff --git a/main.go b/main.go index 50b49cb79..c2d6bd89b 100644 --- a/main.go +++ b/main.go @@ -450,6 +450,10 @@ func run(state overseer.State) { // OSS Default APK handling on feature.EnableAPKHandler.Store(true) + + // OSS Default Use Git Mirror on + feature.UseGitMirror.Store(true) + // OSS Default simplified gitlab enumeration feature.UseSimplifiedGitlabEnumeration.Store(true) diff --git a/pkg/feature/feature.go b/pkg/feature/feature.go index b329c1d44..53a67230c 100644 --- a/pkg/feature/feature.go +++ b/pkg/feature/feature.go @@ -9,6 +9,7 @@ var ( EnableAPKHandler atomic.Bool UserAgentSuffix AtomicString UseSimplifiedGitlabEnumeration atomic.Bool + UseGitMirror atomic.Bool ) type AtomicString struct { diff --git a/pkg/sources/git/git.go b/pkg/sources/git/git.go index 929e14de6..181b7864d 100644 --- a/pkg/sources/git/git.go +++ b/pkg/sources/git/git.go @@ -445,16 +445,26 @@ func executeClone(ctx context.Context, params cloneParams) (*git.Repository, err gitArgs = append(gitArgs, "-c", fmt.Sprintf("http.extraHeader=Authorization: Basic %s", authHeader)) } } - - if !feature.SkipAdditionalRefs.Load() { + // append clone argument + gitArgs = append(gitArgs, "clone") + var dstGitDir string + if feature.UseGitMirror.Load() { gitArgs = append(gitArgs, - "-c", - "remote.origin.fetch=+refs/*:refs/remotes/origin/*") + "--mirror", + ) + dstGitDir = filepath.Join(params.clonePath, gitDirName) // /.git + } else { + if !feature.SkipAdditionalRefs.Load() { + gitArgs = append(gitArgs, + "-c", + "remote.origin.fetch=+refs/*:refs/remotes/origin/*") + } + dstGitDir = params.clonePath } - gitArgs = append(gitArgs, "clone", + gitArgs = append(gitArgs, cloneURL.String(), - params.clonePath, + dstGitDir, "--quiet", // https://git-scm.com/docs/git-clone#Documentation/git-clone.txt-code--quietcode )