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@xxxxxxxx> --- t/perf/lib-pack.sh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/t/perf/lib-pack.sh b/t/perf/lib-pack.sh index 501bb7b272..d3865db286 100644 --- a/t/perf/lib-pack.sh +++ b/t/perf/lib-pack.sh @@ -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 } -- 2.15.0.494.g79a8547723