mirror of
https://github.com/git/git
synced 2024-08-24 10:15:51 +00:00
![Taylor Blau](/assets/img/avatar_default.png)
To help test the performance of permuting the contents of the hash-cache when generating a MIDX bitmap, we need a bitmap which has its hash-cache populated. And since multi-pack bitmaps don't add *new* values to the hash-cache, we have to rely on a single-pack bitmap to generate those values for us. Therefore, generate a pack bitmap before the MIDX one in order to ensure that the MIDX bitmap has entries in its hash-cache. Since we don't want to time generating the pack bitmap, move that to a non-perf test run before we try to generate the MIDX bitmap. Likewise, get rid of the pack bitmap afterwords, to make certain that we are not accidentally using it in the performance tests run later on. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
53 lines
1.3 KiB
Bash
Executable file
53 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='Tests performance using midx bitmaps'
|
|
. ./perf-lib.sh
|
|
. "${TEST_DIRECTORY}/perf/lib-bitmap.sh"
|
|
|
|
test_perf_large_repo
|
|
|
|
# we need to create the tag up front such that it is covered by the repack and
|
|
# thus by generated bitmaps.
|
|
test_expect_success 'create tags' '
|
|
git tag --message="tag pointing to HEAD" perf-tag HEAD
|
|
'
|
|
|
|
test_expect_success 'start with bitmapped pack' '
|
|
git repack -adb
|
|
'
|
|
|
|
test_perf 'setup multi-pack index' '
|
|
git multi-pack-index write --bitmap
|
|
'
|
|
|
|
test_expect_success 'drop pack bitmap' '
|
|
rm -f .git/objects/pack/pack-*.bitmap
|
|
'
|
|
|
|
test_full_bitmap
|
|
|
|
test_expect_success 'create partial bitmap state' '
|
|
# pick a commit to represent the repo tip in the past
|
|
cutoff=$(git rev-list HEAD~100 -1) &&
|
|
orig_tip=$(git rev-parse HEAD) &&
|
|
|
|
# now pretend we have just one tip
|
|
rm -rf .git/logs .git/refs/* .git/packed-refs &&
|
|
git update-ref HEAD $cutoff &&
|
|
|
|
# and then repack, which will leave us with a nice
|
|
# big bitmap pack of the "old" history, and all of
|
|
# the new history will be loose, as if it had been pushed
|
|
# up incrementally and exploded via unpack-objects
|
|
git repack -Ad &&
|
|
git multi-pack-index write --bitmap &&
|
|
|
|
# and now restore our original tip, as if the pushes
|
|
# had happened
|
|
git update-ref HEAD $orig_tip
|
|
'
|
|
|
|
test_partial_bitmap
|
|
|
|
test_done
|