✨ gitfile: fetch no tags during clone #4563
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What kind of change does this PR introduce?
optimization
What is the current behavior?
We already doing a shallow clone, but
go-git
fetches all tags from the remote by default. We don't need them for this operation, we just care about the files at HEAD (or whatever commit is requested).What is the new behavior (if this is a feature change)?**
Don't fetch tags. This performance optimization results in a 3x speedup on my machine when analyzing the
ossf/scorecard
repository with--file-mode git
. It practically gets performance up to--file-mode archive
levelsSee upstream discussion here
Before: 29.974s
After: 8.644s
(archive): 5.173s
NONE
Which issue(s) this PR fixes
Special notes for your reviewer
scdiff tests pass (though the workflow command we have isn't configured to do this)
With a slightly modified scdiff to use
--file-mode git
, the difference is 2x or so:Before: 4m 11s
After: 2m 21s
(archive mode): 2m 15s
Does this PR introduce a user-facing change?
For user-facing changes, please add a concise, human-readable release note to
the
release-note
(In particular, describe what changes users might need to make in their
application as a result of this pull request.)