Merge branch 'main' into gitignore-fetch-filters

This commit is contained in:
Chris Darroch 2022-04-28 11:50:31 -07:00 committed by GitHub
commit 1dce8f3dc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 32 additions and 10 deletions

@ -73,7 +73,7 @@ func checkoutCommand(cmd *cobra.Command, args []string) {
chgitscanner.Filter = filepathfilter.New(rootedPaths(args), nil, filepathfilter.GitIgnore)
if err := chgitscanner.ScanTree(ref.Sha); err != nil {
if err := chgitscanner.ScanTree(ref.Sha, nil); err != nil {
ExitWithError(err)
}
chgitscanner.Close()

@ -87,7 +87,7 @@ func dedupCommand(cmd *cobra.Command, args []string) {
})
defer gitScanner.Close()
if err := gitScanner.ScanTree("HEAD"); err != nil {
if err := gitScanner.ScanTree("HEAD", nil); err != nil {
ExitWithError(err)
}

@ -135,7 +135,7 @@ func pointersToFetchForRef(ref string, filter *filepathfilter.Filter) ([]*lfs.Wr
tempgitscanner.Filter = filter
if err := tempgitscanner.ScanTree(ref); err != nil {
if err := tempgitscanner.ScanTree(ref, nil); err != nil {
return nil, err
}

@ -137,7 +137,7 @@ func lsFilesCommand(cmd *cobra.Command, args []string) {
} else if scanRange {
err = gitscanner.ScanRefRange(includeRef, ref, nil)
} else {
err = gitscanner.ScanTree(ref)
err = gitscanner.ScanTree(ref, nil)
}
if err != nil {

@ -352,7 +352,7 @@ func pruneTaskGetRetainedAtRef(gitscanner *lfs.GitScanner, ref string, retainCha
defer sem.Release(1)
defer waitg.Done()
err := gitscanner.ScanRef(ref, func(p *lfs.WrappedPointer, err error) {
err := gitscanner.ScanTree(ref, func(p *lfs.WrappedPointer, err error) {
if err != nil {
errorChan <- err
return

@ -87,7 +87,7 @@ func pull(filter *filepathfilter.Filter) {
}()
processQueue := time.Now()
if err := gitscanner.ScanTree(ref.Sha); err != nil {
if err := gitscanner.ScanTree(ref.Sha, nil); err != nil {
singleCheckout.Close()
ExitWithError(err)
}

@ -208,8 +208,8 @@ func (s *GitScanner) ScanAll(cb GitScannerFoundPointer) error {
// ScanTree takes a ref and returns WrappedPointer objects in the tree at that
// ref. Differs from ScanRefs in that multiple files in the tree with the same
// content are all reported.
func (s *GitScanner) ScanTree(ref string) error {
callback, err := firstGitScannerCallback(s.FoundPointer)
func (s *GitScanner) ScanTree(ref string, cb GitScannerFoundPointer) error {
callback, err := firstGitScannerCallback(cb, s.FoundPointer)
if err != nil {
return err
}

@ -112,10 +112,14 @@ begin_test "prune all excluded paths"
content_oldandexcluded="To delete: pushed and too old and excluded by filter"
content_oldandunchanged="Keep: pushed and created a while ago, but still current"
content_prevandexcluded="To delete: pushed and in previous commit to HEAD but excluded by filter"
content_unreferencedandexcluded="To delete: unreferenced in deleted branch and pushed and excluded by filter"
content_includedandexcluded="Keep: pushed and both excluded by filter and included by another path"
content_excluded="To delete: pushed and in HEAD but excluded by filter"
oid_oldandexcluded=$(calc_oid "$content_oldandexcluded")
oid_oldandunchanged=$(calc_oid "$content_oldandunchanged")
oid_prevandexcluded=$(calc_oid "$content_prevandexcluded")
oid_unreferencedandexcluded=$(calc_oid "$content_unreferencedandexcluded")
oid_includedandexcluded=$(calc_oid "$content_includedandexcluded")
oid_excluded=$(calc_oid "$content_excluded")
echo "[
@ -131,12 +135,23 @@ begin_test "prune all excluded paths"
{\"Filename\":\"foo/oldandexcluded.dat\",\"Size\":${#content_prevandexcluded}, \"Data\":\"$content_prevandexcluded\"}]
},
{
\"CommitDate\":\"$(get_date -4d)\",
\"NewBranch\":\"branch_to_delete\",
\"Files\":[
{\"Filename\":\"unreferenced.dat\",\"Size\":${#content_unreferencedandexcluded}, \"Data\":\"$content_unreferencedandexcluded\"}]
},
{
\"ParentBranches\":[\"main\"],
\"Files\":[
{\"Filename\":\"foo/unreferencedandexcluded.dat\",\"Size\":${#content_unreferencedandexcluded}, \"Data\":\"$content_unreferencedandexcluded\"},
{\"Filename\":\"foo/includedandexcluded.dat\",\"Size\":${#content_includedandexcluded}, \"Data\":\"$content_includedandexcluded\"},
{\"Filename\":\"included.dat\",\"Size\":${#content_includedandexcluded}, \"Data\":\"$content_includedandexcluded\"},
{\"Filename\":\"foo/oldandexcluded.dat\",\"Size\":${#content_excluded}, \"Data\":\"$content_excluded\"}]
}
]" | lfstest-testutils addcommits
git push origin main
git branch -D branch_to_delete
git config lfs.fetchrecentrefsdays 5
git config lfs.fetchrecentremoterefs true
@ -148,16 +163,23 @@ begin_test "prune all excluded paths"
git lfs prune --dry-run --verbose 2>&1 | tee prune.log
grep "prune: 4 local objects, 1 retained" prune.log
grep "prune: 3 files would be pruned" prune.log
grep "prune: 6 local objects, 2 retained" prune.log
grep "prune: 4 files would be pruned" prune.log
grep "$oid_oldandexcluded" prune.log
grep "$oid_prevandexcluded" prune.log
grep "$oid_unreferencedandexcluded" prune.log
grep "$oid_excluded" prune.log
assert_local_object "$oid_oldandexcluded" "${#content_oldandexcluded}"
assert_local_object "$oid_prevandexcluded" "${#content_prevandexcluded}"
assert_local_object "$oid_unreferencedandexcluded" "${#content_unreferencedandexcluded}"
assert_local_object "$oid_excluded" "${#content_excluded}"
git lfs prune
refute_local_object "$oid_oldandexcluded" "${#content_oldandexcluded}"
assert_local_object "$oid_oldandunchanged" "${#content_oldandunchanged}"
refute_local_object "$oid_prevandexcluded" "${#content_prevandexcluded}"
refute_local_object "$oid_unreferencedandexcluded" "${#content_unreferencedandexcluded}"
assert_local_object "$oid_includedandexcluded" "${#content_includedandexcluded}"
refute_local_object "$oid_excluded" "${#content_excluded}"
)
end_test