git-lfs/lfs
Chris Darroch fbceac20f5 lfs,t: parse only stash log entries for prune
When looking for Git LFS pointers in the Git stash in order
to avoid pruning the corresponding local objects during a
"git lfs prune" command, we want to avoid looking further
back in the Git log file than necessary; otherwise, we may
potentially find many LFS object references which we should
prune but incorrectly consider to be part of the stashes.

We therefore proceed in two steps; first looking solely
at each stash entry's WIP merge commit using the command
"git log -m --first-parent <stash-sha>^..<stash-sha>",
and then looking at each entry's index merge commit and
possible additional untracked files merge commit using
the command "git log <stash-sha>^..<stash-sha>".  By
limiting these commands' commit ranges to just the stash
merge commits, we skip improperly traversing the full log.

We update the relevant tests to include older commits,
one of which should be pruned in each case; note that
with these changes the tests fail with the previous
version of the "git lfs prune" logic for stashes.
We also add stashes to two other tests and confirm that
in both cases the LFS objects from the stashed commits
are retained, but no additional objects are also
unexpectedly retained as a result of the stash.
2021-03-23 01:33:31 -07:00
..
attribute.go add per-worktree configuration option 2020-06-26 14:56:04 -07:00
config_test.go move config.FetchPruneConfig -> lfs.FetchPruneConfig 2017-10-18 13:51:57 -06:00
config.go prune: add options to be more aggressive about pruning 2021-01-13 19:30:40 +00:00
diff_index_scanner.go status: update index before showing status 2019-11-18 20:37:52 +00:00
extension.go Use subprocess for invoking all commands 2020-12-21 22:19:04 +00:00
gitfilter_clean.go lfs: use blobSizeCutoff in clean pointer buf test 2021-03-10 20:58:17 -08:00
gitfilter_smudge.go Check error when creating local storage directory 2020-02-10 16:07:59 +00:00
gitfilter.go lfs,git: send refspec in batch api calls from smudge filter 2018-01-05 15:01:29 -07:00
gitscanner_catfilebatch.go lfs: make all blob size checks consistent 2021-03-11 13:08:19 -08:00
gitscanner_catfilebatchcheck.go lfs: parse git cat-file --batch-check output for SHA-256 2020-07-29 20:53:43 +00:00
gitscanner_catfilebatchcheckscanner_test.go lfs: teach gitscanner how to emit lockable files that aren't lfs objects 2017-02-16 16:52:40 -07:00
gitscanner_index.go git: pass Git environment to object scanner 2020-07-29 20:53:43 +00:00
gitscanner_log.go lfs,t: parse only stash log entries for prune 2021-03-23 01:33:31 -07:00
gitscanner_pointerscanner_test.go Support SHA-256 repositories 2020-07-29 20:53:44 +00:00
gitscanner_refs.go git: add a function to check for a zero object ID 2020-07-29 20:53:43 +00:00
gitscanner_remotes.go git: improve performance of remote ref listing 2020-07-01 22:51:27 -07:00
gitscanner_tree.go git: pass Git environment to object scanner 2020-07-29 20:53:43 +00:00
gitscanner.go prune: fix deleting objects referred to by stashes 2020-08-07 16:48:59 +01:00
hook.go Use proper repo permissions when creating directories 2018-12-13 17:51:02 +00:00
lfs_test.go t: move testutils.go to cmd sub-package 2018-07-13 12:54:18 -05:00
lfs.go commands: canonicalize certain Git environment variables 2020-10-14 16:49:23 +00:00
pointer_test.go Tighten LFS pointer regexp 2021-03-04 10:43:11 -08:00
pointer.go lfs: make all blob size checks consistent 2021-03-11 13:08:19 -08:00
scanner_git_test.go Pass environment variables into object scanner 2019-08-15 17:39:32 +00:00
scanner_test.go extract a filepathfilter package 2016-11-21 11:38:39 -07:00
scanner.go git: pass Git environment to object scanner 2020-07-29 20:53:43 +00:00
util_generic.go Fix non linux with cgo build condition 2016-01-30 00:58:55 +03:00
util_test.go progress,tools: move CopyCallback (and related) to 'tools' 2017-11-22 14:08:33 -08:00
util.go Fix error strings to follow Go guidelines 2019-10-22 17:33:49 +03:00