(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'Tests pack performance using bitmaps'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./perf-lib.sh)})
    (C {(test_perf_large_repo)})
    (C {(test_expect_success)} {(SQ <'setup bitmap config'>)} 
      {
        (SQ <'\n'> <'\tgit config pack.writebitmaps true &&\n'> 
          <'\tgit config pack.writebitmaphashcache true\n'>
        )
      }
    )
    (C {(test_perf)} {(SQ <'repack to disk'>)} {(SQ <'\n'> <'\tgit repack -ad\n'>)})
    (C {(test_perf)} {(SQ <'simulated clone'>)} 
      {(SQ <'\n'> <'\tgit pack-objects --stdout --all </dev/null >/dev/null\n'>)}
    )
    (C {(test_perf)} {(SQ <'simulated fetch'>)} 
      {
        (SQ <'\n'> <'\thave=$(git rev-list HEAD~100 -1) &&\n'> <'\t{\n'> <'\t\techo HEAD &&\n'> 
          <'\t\techo ^$have\n'> <'\t} | git pack-objects --revs --stdout >/dev/null\n'>
        )
      }
    )
    (C {(test_perf)} {(SQ <'pack to file'>)} 
      {(SQ <'\n'> <'\tgit pack-objects --all pack1 </dev/null >/dev/null\n'>)}
    )
    (C {(test_perf)} {(SQ <'pack to file (bitmap)'>)} 
      {(SQ <'\n'> <'\tgit pack-objects --use-bitmap-index --all pack1b </dev/null >/dev/null\n'>)}
    )
    (C {(test_expect_success)} {(SQ <'create partial bitmap state'>)} 
      {
        (SQ <'\n'> <'\t# pick a commit to represent the repo tip in the past\n'> 
          <'\tcutoff=$(git rev-list HEAD~100 -1) &&\n'> <'\torig_tip=$(git rev-parse HEAD) &&\n'> <'\n'> 
          <'\t# now kill off all of the refs and pretend we had\n'> <'\t# just the one tip\n'> <'\trm -rf .git/logs .git/refs/* .git/packed-refs &&\n'> 
          <'\tgit update-ref HEAD $cutoff &&\n'> <'\n'> <'\t# and then repack, which will leave us with a nice\n'> 
          <'\t# big bitmap pack of the "old" history, and all of\n'> <'\t# the new history will be loose, as if it had been pushed\n'> 
          <'\t# up incrementally and exploded via unpack-objects\n'> <'\tgit repack -Ad &&\n'> <'\n'> <'\t# and now restore our original tip, as if the pushes\n'> 
          <'\t# had happened\n'> <'\tgit update-ref HEAD $orig_tip\n'>
        )
      }
    )
    (C {(test_perf)} {(SQ <'clone (partial bitmap)'>)} 
      {(SQ <'\n'> <'\tgit pack-objects --stdout --all </dev/null >/dev/null\n'>)}
    )
    (C {(test_perf)} {(SQ <'pack to file (partial bitmap)'>)} 
      {(SQ <'\n'> <'\tgit pack-objects --use-bitmap-index --all pack2b </dev/null >/dev/null\n'>)}
    )
    (C {(test_done)})
  ]
)