t/perf/lib-pack: use fast-import checkpoint to create packs
authorJeff King <peff@peff.net>
Mon, 20 Nov 2017 20:27:19 +0000 (15:27 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Nov 2017 02:07:28 +0000 (11:07 +0900)
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>
t/perf/lib-pack.sh
index 501bb7b272fed1be997e0c357c18e1bb19895bca..d3865db286fc644e3a6dc20a2e8932695b35df2a 100644 (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
 }