Merge branch 'main' into gitignore-fetch-filters
This commit is contained in:
commit
1dce8f3dc2
@ -73,7 +73,7 @@ func checkoutCommand(cmd *cobra.Command, args []string) {
|
|||||||
|
|
||||||
chgitscanner.Filter = filepathfilter.New(rootedPaths(args), nil, filepathfilter.GitIgnore)
|
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)
|
ExitWithError(err)
|
||||||
}
|
}
|
||||||
chgitscanner.Close()
|
chgitscanner.Close()
|
||||||
|
@ -87,7 +87,7 @@ func dedupCommand(cmd *cobra.Command, args []string) {
|
|||||||
})
|
})
|
||||||
defer gitScanner.Close()
|
defer gitScanner.Close()
|
||||||
|
|
||||||
if err := gitScanner.ScanTree("HEAD"); err != nil {
|
if err := gitScanner.ScanTree("HEAD", nil); err != nil {
|
||||||
ExitWithError(err)
|
ExitWithError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ func pointersToFetchForRef(ref string, filter *filepathfilter.Filter) ([]*lfs.Wr
|
|||||||
|
|
||||||
tempgitscanner.Filter = filter
|
tempgitscanner.Filter = filter
|
||||||
|
|
||||||
if err := tempgitscanner.ScanTree(ref); err != nil {
|
if err := tempgitscanner.ScanTree(ref, nil); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ func lsFilesCommand(cmd *cobra.Command, args []string) {
|
|||||||
} else if scanRange {
|
} else if scanRange {
|
||||||
err = gitscanner.ScanRefRange(includeRef, ref, nil)
|
err = gitscanner.ScanRefRange(includeRef, ref, nil)
|
||||||
} else {
|
} else {
|
||||||
err = gitscanner.ScanTree(ref)
|
err = gitscanner.ScanTree(ref, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -352,7 +352,7 @@ func pruneTaskGetRetainedAtRef(gitscanner *lfs.GitScanner, ref string, retainCha
|
|||||||
defer sem.Release(1)
|
defer sem.Release(1)
|
||||||
defer waitg.Done()
|
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 {
|
if err != nil {
|
||||||
errorChan <- err
|
errorChan <- err
|
||||||
return
|
return
|
||||||
|
@ -87,7 +87,7 @@ func pull(filter *filepathfilter.Filter) {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
processQueue := time.Now()
|
processQueue := time.Now()
|
||||||
if err := gitscanner.ScanTree(ref.Sha); err != nil {
|
if err := gitscanner.ScanTree(ref.Sha, nil); err != nil {
|
||||||
singleCheckout.Close()
|
singleCheckout.Close()
|
||||||
ExitWithError(err)
|
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
|
// 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
|
// ref. Differs from ScanRefs in that multiple files in the tree with the same
|
||||||
// content are all reported.
|
// content are all reported.
|
||||||
func (s *GitScanner) ScanTree(ref string) error {
|
func (s *GitScanner) ScanTree(ref string, cb GitScannerFoundPointer) error {
|
||||||
callback, err := firstGitScannerCallback(s.FoundPointer)
|
callback, err := firstGitScannerCallback(cb, s.FoundPointer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
26
t/t-prune.sh
26
t/t-prune.sh
@ -112,10 +112,14 @@ begin_test "prune all excluded paths"
|
|||||||
content_oldandexcluded="To delete: pushed and too old and excluded by filter"
|
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_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_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"
|
content_excluded="To delete: pushed and in HEAD but excluded by filter"
|
||||||
oid_oldandexcluded=$(calc_oid "$content_oldandexcluded")
|
oid_oldandexcluded=$(calc_oid "$content_oldandexcluded")
|
||||||
oid_oldandunchanged=$(calc_oid "$content_oldandunchanged")
|
oid_oldandunchanged=$(calc_oid "$content_oldandunchanged")
|
||||||
oid_prevandexcluded=$(calc_oid "$content_prevandexcluded")
|
oid_prevandexcluded=$(calc_oid "$content_prevandexcluded")
|
||||||
|
oid_unreferencedandexcluded=$(calc_oid "$content_unreferencedandexcluded")
|
||||||
|
oid_includedandexcluded=$(calc_oid "$content_includedandexcluded")
|
||||||
oid_excluded=$(calc_oid "$content_excluded")
|
oid_excluded=$(calc_oid "$content_excluded")
|
||||||
|
|
||||||
echo "[
|
echo "[
|
||||||
@ -131,12 +135,23 @@ begin_test "prune all excluded paths"
|
|||||||
{\"Filename\":\"foo/oldandexcluded.dat\",\"Size\":${#content_prevandexcluded}, \"Data\":\"$content_prevandexcluded\"}]
|
{\"Filename\":\"foo/oldandexcluded.dat\",\"Size\":${#content_prevandexcluded}, \"Data\":\"$content_prevandexcluded\"}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
\"CommitDate\":\"$(get_date -4d)\",
|
||||||
|
\"NewBranch\":\"branch_to_delete\",
|
||||||
\"Files\":[
|
\"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\"}]
|
{\"Filename\":\"foo/oldandexcluded.dat\",\"Size\":${#content_excluded}, \"Data\":\"$content_excluded\"}]
|
||||||
}
|
}
|
||||||
]" | lfstest-testutils addcommits
|
]" | lfstest-testutils addcommits
|
||||||
|
|
||||||
git push origin main
|
git push origin main
|
||||||
|
git branch -D branch_to_delete
|
||||||
|
|
||||||
git config lfs.fetchrecentrefsdays 5
|
git config lfs.fetchrecentrefsdays 5
|
||||||
git config lfs.fetchrecentremoterefs true
|
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
|
git lfs prune --dry-run --verbose 2>&1 | tee prune.log
|
||||||
|
|
||||||
grep "prune: 4 local objects, 1 retained" prune.log
|
grep "prune: 6 local objects, 2 retained" prune.log
|
||||||
grep "prune: 3 files would be pruned" prune.log
|
grep "prune: 4 files would be pruned" prune.log
|
||||||
grep "$oid_oldandexcluded" prune.log
|
grep "$oid_oldandexcluded" prune.log
|
||||||
grep "$oid_prevandexcluded" prune.log
|
grep "$oid_prevandexcluded" prune.log
|
||||||
|
grep "$oid_unreferencedandexcluded" prune.log
|
||||||
grep "$oid_excluded" 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
|
git lfs prune
|
||||||
refute_local_object "$oid_oldandexcluded" "${#content_oldandexcluded}"
|
refute_local_object "$oid_oldandexcluded" "${#content_oldandexcluded}"
|
||||||
assert_local_object "$oid_oldandunchanged" "${#content_oldandunchanged}"
|
assert_local_object "$oid_oldandunchanged" "${#content_oldandunchanged}"
|
||||||
refute_local_object "$oid_prevandexcluded" "${#content_prevandexcluded}"
|
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}"
|
refute_local_object "$oid_excluded" "${#content_excluded}"
|
||||||
)
|
)
|
||||||
end_test
|
end_test
|
||||||
|
Loading…
Reference in New Issue
Block a user