Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
commit
1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions
55
t/perf/p5551-fetch-rescan.sh
Executable file
55
t/perf/p5551-fetch-rescan.sh
Executable file
|
|
@ -0,0 +1,55 @@
|
|||
#!/bin/sh
|
||||
|
||||
test_description='fetch performance with many packs
|
||||
|
||||
It is common for fetch to consider objects that we might not have, and it is an
|
||||
easy mistake for the code to use a function like `parse_object` that might
|
||||
give the correct _answer_ on such an object, but do so slowly (due to
|
||||
re-scanning the pack directory for lookup failures).
|
||||
|
||||
The resulting performance drop can be hard to notice in a real repository, but
|
||||
becomes quite large in a repository with a large number of packs. So this
|
||||
test creates a more pathological case, since any mistakes would produce a more
|
||||
noticeable slowdown.
|
||||
'
|
||||
. ./perf-lib.sh
|
||||
. "$TEST_DIRECTORY"/perf/lib-pack.sh
|
||||
|
||||
test_expect_success 'create parent and child' '
|
||||
git init parent &&
|
||||
git clone parent child
|
||||
'
|
||||
|
||||
|
||||
test_expect_success 'create refs in the parent' '
|
||||
(
|
||||
cd parent &&
|
||||
git commit --allow-empty -m foo &&
|
||||
head=$(git rev-parse HEAD) &&
|
||||
test_seq 1000 |
|
||||
sed "s,.*,update refs/heads/& $head," |
|
||||
$MODERN_GIT update-ref --stdin
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'create many packs in the child' '
|
||||
(
|
||||
cd child &&
|
||||
setup_many_packs
|
||||
)
|
||||
'
|
||||
|
||||
test_perf 'fetch' '
|
||||
# start at the same state for each iteration
|
||||
obj=$($MODERN_GIT -C parent rev-parse HEAD) &&
|
||||
(
|
||||
cd child &&
|
||||
$MODERN_GIT for-each-ref --format="delete %(refname)" refs/remotes |
|
||||
$MODERN_GIT update-ref --stdin &&
|
||||
rm -vf .git/objects/$(echo $obj | sed "s|^..|&/|") &&
|
||||
|
||||
git fetch
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
Loading…
Add table
Add a link
Reference in a new issue