git-lfs/git/githistory
brian m. carlson 0d31bce1c1
git/githistory: cache files based on full path
When we cache files, do so on the full path instead of just the
directory entry.  This means that when we have an identical file with
the same name in two different direectories, we distinguish between the
two paths and ensure both are added to .gitattributes.

This is an alternate solution to #4671 which should perform better.  For
compmarison, with a clone of Git's main repository with the following
command, we get:

git lfs migrate import --everything --include="*.h":

* v3.0.1      (broken):  608s user,   53s system,    5:34 total
* v3.0.2      (fixed): 13435s user, 1255s system, 1:43:17 total
* this commit (fixed):   716s user,   67s system,    6:59 total

This is a much better performance characteristic for equivalent results.

Preserve the integration from the earlier attempt at fixing this plus
add an additional one.  Avoid using assert_pointer in the new test
because that helper doesn't always work correctly when there are two
files with the same file name.
2022-01-18 14:22:32 +00:00
..
fixtures git/githistory/fixtures: add annotated tags fixture 2017-12-11 15:27:22 -08:00
fixtures_test.go Fix typos 2022-01-05 08:49:08 +02:00
ref_updater_test.go Set package version to v3 2021-09-02 20:41:08 +00:00
ref_updater.go Set package version to v3 2021-09-02 20:41:08 +00:00
rewriter_test.go Revert "Call migrate() BlobFn on every blob" 2022-01-12 17:34:19 +00:00
rewriter.go git/githistory: cache files based on full path 2022-01-18 14:22:32 +00:00