t/perf/lib-pack: use fast-import checkpoint to create packs

We currently use fast-import only to create a large number
of objects, and then run O(n) invocations of pack-objects to
turn them into packs.

We can do this faster by just asking fast-import to
checkpoint and create a pack for each (after telling it
not to turn loose tiny packs).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2017-11-20 15:27:19 -05:00 committed by Junio C Hamano
parent aa338d3508
commit 0a11e40275

View file

@ -9,15 +9,10 @@ create_packs () {
print "data <<EOF";
print "$_";
print "EOF";
print "checkpoint"
}
' "$@" |
git fast-import &&
git cat-file --batch-all-objects --batch-check='%(objectname)' |
while read sha1
do
echo $sha1 | git pack-objects .git/objects/pack/pack
done
git fast-import
}
# create a large number of packs, disabling any gc which might
@ -25,5 +20,6 @@ create_packs () {
setup_many_packs () {
git config gc.auto 0 &&
git config gc.autopacklimit 0 &&
git config fastimport.unpacklimit 0 &&
create_packs 500
}