t / perf / p5310-pack-bitmaps.shon commit Merge branch 'ml/filter-branch-portability-fix' (f46cdf4)
   1#!/bin/sh
   2
   3test_description='Tests pack performance using bitmaps'
   4. ./perf-lib.sh
   5
   6test_perf_large_repo
   7
   8# note that we do everything through config,
   9# since we want to be able to compare bitmap-aware
  10# git versus non-bitmap git
  11#
  12# We intentionally use the deprecated pack.writebitmaps
  13# config so that we can test against older versions of git.
  14test_expect_success 'setup bitmap config' '
  15        git config pack.writebitmaps true &&
  16        git config pack.writebitmaphashcache true
  17'
  18
  19test_perf 'repack to disk' '
  20        git repack -ad
  21'
  22
  23test_perf 'simulated clone' '
  24        git pack-objects --stdout --all </dev/null >/dev/null
  25'
  26
  27test_perf 'simulated fetch' '
  28        have=$(git rev-list HEAD~100 -1) &&
  29        {
  30                echo HEAD &&
  31                echo ^$have
  32        } | git pack-objects --revs --stdout >/dev/null
  33'
  34
  35test_perf 'pack to file' '
  36        git pack-objects --all pack1 </dev/null >/dev/null
  37'
  38
  39test_perf 'pack to file (bitmap)' '
  40        git pack-objects --use-bitmap-index --all pack1b </dev/null >/dev/null
  41'
  42
  43test_expect_success 'create partial bitmap state' '
  44        # pick a commit to represent the repo tip in the past
  45        cutoff=$(git rev-list HEAD~100 -1) &&
  46        orig_tip=$(git rev-parse HEAD) &&
  47
  48        # now kill off all of the refs and pretend we had
  49        # just the one tip
  50        rm -rf .git/logs .git/refs/* .git/packed-refs &&
  51        git update-ref HEAD $cutoff &&
  52
  53        # and then repack, which will leave us with a nice
  54        # big bitmap pack of the "old" history, and all of
  55        # the new history will be loose, as if it had been pushed
  56        # up incrementally and exploded via unpack-objects
  57        git repack -Ad &&
  58
  59        # and now restore our original tip, as if the pushes
  60        # had happened
  61        git update-ref HEAD $orig_tip
  62'
  63
  64test_perf 'clone (partial bitmap)' '
  65        git pack-objects --stdout --all </dev/null >/dev/null
  66'
  67
  68test_perf 'pack to file (partial bitmap)' '
  69        git pack-objects --use-bitmap-index --all pack2b </dev/null >/dev/null
  70'
  71
  72test_done