(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'exercise basic bitmap functionality' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: objpath
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ (.git/objects/) 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:26)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))})
                              (C {(sed)} {(-e)} 
                                {(SQ (Token id:Id.Lit_Chars val:'s|\\(..\\)|\\1/|' span_id:40))}
                              )
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: list_packed_objects
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{(git)} {(show-index)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:63)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                )
                (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:74))} {(-f2)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: has_any
      body: 
        (command.BraceGroup
          children: [(C {(grep)} {(-Ff)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))})]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup repo with moderate-sized history' span_id:117))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) 
          (Token id:Id.Lit_Chars val:'\tfor i in $(test_seq 1 10); do\n' span_id:122) (Token id:Id.Lit_Chars val:'\t\ttest_commit $i\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\tgit checkout -b other HEAD~5 &&\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\tfor i in $(test_seq 1 10); do\n' span_id:126) (Token id:Id.Lit_Chars val:'\t\ttest_commit side-$i\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:129) 
          (Token
            id: Id.Lit_Chars
            val: '\tbitmaptip=$(git rev-parse master) &&\n'
            span_id: 130
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tblob=$(echo tagged-blob | git hash-object -w --stdin) &&\n'
            span_id: 131
          ) (Token id:Id.Lit_Chars val:'\tgit tag tagged-blob $blob &&\n' span_id:132) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config repack.writebitmaps true &&\n'
            span_id: 133
          ) (Token id:Id.Lit_Chars val:'\tgit config pack.writebitmaphashcache true\n' span_id:134)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'full repack creates bitmaps' span_id:141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\tgit repack -ad &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tls .git/objects/pack/ | grep bitmap >output &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 output\n' span_id:148)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rev-list --test-bitmap verifies bitmaps' span_id:155))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\tgit rev-list --test-bitmap HEAD\n' span_id:160)
        )
      }
    )
    (command.ShFunction
      name: rev_list_tests
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:state)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [171]
                )
              ]
            )
            (C {(test_expect_success)} 
              {(DQ ('counting commits via bitmap (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --count HEAD >expect &&\n'
                    span_id: 186
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --use-bitmap-index --count HEAD >actual &&\n'
                    span_id: 187
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:188) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:189)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('counting partial commits via bitmap (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:203) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --count HEAD~5..HEAD >expect &&\n'
                    span_id: 204
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --use-bitmap-index --count HEAD~5..HEAD >actual &&\n'
                    span_id: 205
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:206) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:207)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('counting commits with limit (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:221) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --count -n 1 HEAD >expect &&\n'
                    span_id: 222
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --use-bitmap-index --count -n 1 HEAD >actual &&\n'
                    span_id: 223
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:224) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:225)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('counting non-linear history (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:239) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --count other...master >expect &&\n'
                    span_id: 240
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --use-bitmap-index --count other...master >actual &&\n'
                    span_id: 241
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:242) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:243)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('counting commits with limiting (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --count HEAD -- 1.t >expect &&\n'
                    span_id: 258
                  ) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --use-bitmap-index --count HEAD -- 1.t >actual &&\n'
                    span_id: 259
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expect actual\n' span_id:260) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:261)
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ('enumerate --objects (') ($ Id.VSub_DollarName '$state') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:275) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --objects --use-bitmap-index HEAD >tmp &&\n'
                    span_id: 276
                  ) (Token id:Id.Lit_Chars val:'\t\tcut -d" " -f1 <tmp >tmp2 &&\n' span_id:277) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tsort <tmp2 >actual &&\n'
                    span_id: 278
                  ) (Token id:Id.Lit_Chars val:'\t\tgit rev-list --objects HEAD >tmp &&\n' span_id:279) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tcut -d" " -f1 <tmp >tmp2 &&\n'
                    span_id: 280
                  ) (Token id:Id.Lit_Chars val:'\t\tsort <tmp2 >expect &&\n' span_id:281) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\ttest_cmp expect actual\n'
                    span_id: 282
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:283)
                )
              }
            )
            (C {(test_expect_success)} 
              {
                (DQ ('bitmap --objects handles non-commit objects (') ($ Id.VSub_DollarName '$state') 
                  (')')
                )
              } 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'\t\tgit rev-list --objects --use-bitmap-index HEAD tagged-blob >actual &&\n'
                    span_id: 298
                  ) (Token id:Id.Lit_Chars val:'\t\tgrep $blob actual\n' span_id:299) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:300)
                )
              }
            )
          ]
        )
    )
    (C {(rev_list_tests)} {(SQ (Token id:Id.Lit_Chars val:'full bitmap' span_id:309))})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone from bitmapped repository' span_id:316))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:320) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --no-local --bare . clone.git &&\n'
            span_id: 321
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:322) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=clone.git rev-parse HEAD >actual &&\n'
            span_id: 323
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:324)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup further non-bitmapped commits' span_id:331))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:335) 
          (Token id:Id.Lit_Chars val:'\tfor i in $(test_seq 1 10); do\n' span_id:336) (Token id:Id.Lit_Chars val:'\t\ttest_commit further-$i\n' span_id:337) 
          (Token id:Id.Lit_Chars val:'\tdone\n' span_id:338)
        )
      }
    )
    (C {(rev_list_tests)} {(SQ (Token id:Id.Lit_Chars val:'partial bitmap' span_id:345))})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch (partial bitmap)' span_id:352))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=clone.git fetch origin master:master &&\n'
            span_id: 357
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:358) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=clone.git rev-parse HEAD >actual &&\n'
            span_id: 359
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:360)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'incremental repack cannot create bitmaps' span_id:367))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:371) 
          (Token id:Id.Lit_Chars val:'\ttest_commit more-1 &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\tfind .git/objects/pack -name "*.bitmap" >expect &&\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\tgit repack -d &&\n' span_id:374) (Token id:Id.Lit_Chars val:'\tfind .git/objects/pack -name "*.bitmap" >actual &&\n' span_id:375) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:376)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'incremental repack can disable bitmaps' span_id:383))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:387) 
          (Token id:Id.Lit_Chars val:'\ttest_commit more-2 &&\n' span_id:388) (Token id:Id.Lit_Chars val:'\tgit repack -d --no-write-bitmap-index\n' span_id:389)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack-objects respects --local (non-local loose)' span_id:396))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:400) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare alt.git &&\n' span_id:401) 
          (Token
            id: Id.Lit_Chars
            val: '\techo $(pwd)/alt.git/objects >.git/objects/info/alternates &&\n'
            span_id: 402
          ) (Token id:Id.Lit_Chars val:'\techo content1 >file1 &&\n' span_id:403) 
          (Token
            id: Id.Lit_Chars
            val: '\t# non-local loose object which is not present in bitmapped pack\n'
            span_id: 404
          ) (Token id:Id.Lit_Chars val:'\taltblob=$(GIT_DIR=alt.git git hash-object -w file1) &&\n' span_id:405) 
          (Token
            id: Id.Lit_Chars
            val: '\t# non-local loose object which is also present in bitmapped pack\n'
            span_id: 406
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cat-file blob $blob | GIT_DIR=alt.git git hash-object -w --stdin &&\n'
            span_id: 407
          ) (Token id:Id.Lit_Chars val:'\tgit add file1 &&\n' span_id:408) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:409) (Token id:Id.Lit_Chars val:'\tgit commit -m commit_file1 &&\n' span_id:410) 
          (Token
            id: Id.Lit_Chars
            val: '\techo HEAD | git pack-objects --local --stdout --revs >1.pack &&\n'
            span_id: 411
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 1.pack &&\n' span_id:412) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 1.idx >1.objects &&\n'
            span_id: 413
          ) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "$altblob" "$blob" >nonlocal-loose &&\n' span_id:414) 
          (Token id:Id.Lit_Chars val:'\t! has_any nonlocal-loose 1.objects\n' span_id:415)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'pack-objects respects --honor-pack-keep (local non-bitmapped pack)'
            span_id: 422
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:426) 
          (Token id:Id.Lit_Chars val:'\techo content2 >file2 &&\n' span_id:427) (Token id:Id.Lit_Chars val:'\tblob2=$(git hash-object -w file2) &&\n' span_id:428) 
          (Token id:Id.Lit_Chars val:'\tgit add file2 &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:430) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m commit_file2 &&\n' span_id:431) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "$blob2" "$bitmaptip" >keepobjects &&\n' span_id:432) 
          (Token
            id: Id.Lit_Chars
            val: '\tpack2=$(git pack-objects pack2 <keepobjects) &&\n'
            span_id: 433
          ) (Token id:Id.Lit_Chars val:'\tmv pack2-$pack2.* .git/objects/pack/ &&\n' span_id:434) 
          (Token
            id: Id.Lit_Chars
            val: '\t>.git/objects/pack/pack2-$pack2.keep &&\n'
            span_id: 435
          ) (Token id:Id.Lit_Chars val:'\trm $(objpath $blob2) &&\n' span_id:436) 
          (Token
            id: Id.Lit_Chars
            val: '\techo HEAD | git pack-objects --honor-pack-keep --stdout --revs >2a.pack &&\n'
            span_id: 437
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 2a.pack &&\n' span_id:438) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 2a.idx >2a.objects &&\n'
            span_id: 439
          ) (Token id:Id.Lit_Chars val:'\t! has_any keepobjects 2a.objects\n' span_id:440)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack-objects respects --local (non-local pack)' span_id:447))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:451) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git/objects/pack/pack2-$pack2.* alt.git/objects/pack/ &&\n'
            span_id: 452
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\techo HEAD | git pack-objects --local --stdout --revs >2b.pack &&\n'
            span_id: 453
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 2b.pack &&\n' span_id:454) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 2b.idx >2b.objects &&\n'
            span_id: 455
          ) (Token id:Id.Lit_Chars val:'\t! has_any keepobjects 2b.objects\n' span_id:456)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'pack-objects respects --honor-pack-keep (local bitmapped pack)'
            span_id: 463
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:467) 
          (Token
            id: Id.Lit_Chars
            val: '\tls .git/objects/pack/ | grep bitmap >output &&\n'
            span_id: 468
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 output &&\n' span_id:469) 
          (Token
            id: Id.Lit_Chars
            val: '\tpackbitmap=$(basename $(cat output) .bitmap) &&\n'
            span_id: 470
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects .git/objects/pack/$packbitmap.idx >packbitmap.objects &&\n'
            span_id: 471
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "rm -f .git/objects/pack/$packbitmap.keep" &&\n'
            span_id: 472
          ) (Token id:Id.Lit_Chars val:'\t>.git/objects/pack/$packbitmap.keep &&\n' span_id:473) 
          (Token
            id: Id.Lit_Chars
            val: '\techo HEAD | git pack-objects --honor-pack-keep --stdout --revs >3a.pack &&\n'
            span_id: 474
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 3a.pack &&\n' span_id:475) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 3a.idx >3a.objects &&\n'
            span_id: 476
          ) (Token id:Id.Lit_Chars val:'\t! has_any packbitmap.objects 3a.objects\n' span_id:477)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'pack-objects respects --local (non-local bitmapped pack)'
            span_id: 484
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:488) 
          (Token
            id: Id.Lit_Chars
            val: '\tmv .git/objects/pack/$packbitmap.* alt.git/objects/pack/ &&\n'
            span_id: 489
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_when_finished "mv alt.git/objects/pack/$packbitmap.* .git/objects/pack/" &&\n'
            span_id: 490
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\techo HEAD | git pack-objects --local --stdout --revs >3b.pack &&\n'
            span_id: 491
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 3b.pack &&\n' span_id:492) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 3b.idx >3b.objects &&\n'
            span_id: 493
          ) (Token id:Id.Lit_Chars val:'\t! has_any packbitmap.objects 3b.objects\n' span_id:494)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack-objects to file can use bitmap' span_id:501))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:505) 
          (Token
            id: Id.Lit_Chars
            val: '\t# make sure we still have 1 bitmap index from previous tests\n'
            span_id: 506
          ) (Token id:Id.Lit_Chars val:'\tls .git/objects/pack/ | grep bitmap >output &&\n' span_id:507) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 output &&\n' span_id:508) 
          (Token
            id: Id.Lit_Chars
            val: '\t# verify equivalent packs are generated with/without using bitmap index\n'
            span_id: 509
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tpackasha1=$(git pack-objects --no-use-bitmap-index --all packa </dev/null) &&\n'
            span_id: 510
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tpackbsha1=$(git pack-objects --use-bitmap-index --all packb </dev/null) &&\n'
            span_id: 511
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects <packa-$packasha1.idx >packa.objects &&\n'
            span_id: 512
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects <packb-$packbsha1.idx >packb.objects &&\n'
            span_id: 513
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp packa.objects packb.objects\n' span_id:514)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'full repack, reusing previous bitmaps' span_id:521))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:525) 
          (Token id:Id.Lit_Chars val:'\tgit repack -ad &&\n' span_id:526) (Token id:Id.Lit_Chars val:'\tls .git/objects/pack/ | grep bitmap >output &&\n' span_id:527) 
          (Token id:Id.Lit_Chars val:'\ttest_line_count = 1 output\n' span_id:528)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch (full bitmap)' span_id:535))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:539) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=clone.git fetch origin master:master &&\n'
            span_id: 540
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expect &&\n' span_id:541) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit --git-dir=clone.git rev-parse HEAD >actual &&\n'
            span_id: 542
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:543)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'create objects for missing-HAVE tests' span_id:550))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:554) 
          (Token
            id: Id.Lit_Chars
            val: '\tblob=$(echo "missing have" | git hash-object -w --stdin) &&\n'
            span_id: 555
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttree=$(printf "100644 blob $blob\\tfile\\n" | git mktree) &&\n'
            span_id: 556
          ) (Token id:Id.Lit_Chars val:'\tparent=$(echo parent | git commit-tree $tree) &&\n' span_id:557) 
          (Token
            id: Id.Lit_Chars
            val: '\tcommit=$(echo commit | git commit-tree $tree -p $parent) &&\n'
            span_id: 558
          ) (Token id:Id.Lit_Chars val:'\tcat >revs <<-EOF\n' span_id:559) 
          (Token id:Id.Lit_Chars val:'\tHEAD\n' span_id:560) (Token id:Id.Lit_Chars val:'\t^HEAD^\n' span_id:561) 
          (Token id:Id.Lit_Chars val:'\t^$commit\n' span_id:562) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:563)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack-objects respects --incremental' span_id:570))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:574) 
          (Token id:Id.Lit_Chars val:'\tcat >revs2 <<-EOF &&\n' span_id:575) (Token id:Id.Lit_Chars val:'\tHEAD\n' span_id:576) 
          (Token id:Id.Lit_Chars val:'\t$commit\n' span_id:577) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:578) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit pack-objects --incremental --stdout --revs <revs2 >4.pack &&\n'
            span_id: 579
          ) (Token id:Id.Lit_Chars val:'\tgit index-pack 4.pack &&\n' span_id:580) 
          (Token
            id: Id.Lit_Chars
            val: '\tlist_packed_objects 4.idx >4.objects &&\n'
            span_id: 581
          ) (Token id:Id.Lit_Chars val:'\ttest_line_count = 4 4.objects &&\n' span_id:582) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-list --objects $commit >revlist &&\n'
            span_id: 583
          ) (Token id:Id.Lit_Chars val:'\tcut -d" " -f1 revlist |sort >objects &&\n' span_id:584) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp 4.objects objects\n' span_id:585)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack with missing blob' span_id:592))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:596) 
          (Token id:Id.Lit_Chars val:'\trm $(objpath $blob) &&\n' span_id:597) (Token id:Id.Lit_Chars val:'\tgit pack-objects --stdout --revs <revs >/dev/null\n' span_id:598)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack with missing tree' span_id:605))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:609) 
          (Token id:Id.Lit_Chars val:'\trm $(objpath $tree) &&\n' span_id:610) (Token id:Id.Lit_Chars val:'\tgit pack-objects --stdout --revs <revs >/dev/null\n' span_id:611)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack with missing parent' span_id:618))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:622) 
          (Token id:Id.Lit_Chars val:'\trm $(objpath $parent) &&\n' span_id:623) (Token id:Id.Lit_Chars val:'\tgit pack-objects --stdout --revs <revs >/dev/null\n' span_id:624)
        )
      }
    )
    (C {(test_expect_success)} {(JGIT)} 
      {(SQ (Token id:Id.Lit_Chars val:'we can read jgit bitmaps' span_id:633))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:637) 
          (Token id:Id.Lit_Chars val:'\tgit clone . compat-jgit &&\n' span_id:638) (Token id:Id.Lit_Chars val:'\t(\n' span_id:639) 
          (Token id:Id.Lit_Chars val:'\t\tcd compat-jgit &&\n' span_id:640) (Token id:Id.Lit_Chars val:'\t\trm -f .git/objects/pack/*.bitmap &&\n' span_id:641) 
          (Token id:Id.Lit_Chars val:'\t\tjgit gc &&\n' span_id:642) (Token id:Id.Lit_Chars val:'\t\tgit rev-list --test-bitmap HEAD\n' span_id:643) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:644)
        )
      }
    )
    (C {(test_expect_success)} {(JGIT)} 
      {(SQ (Token id:Id.Lit_Chars val:'jgit can read our bitmaps' span_id:653))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:657) 
          (Token id:Id.Lit_Chars val:'\tgit clone . compat-us &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\t(\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'\t\tcd compat-us &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\t\tgit repack -adb &&\n' span_id:661) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t# jgit gc will barf if it does not like our bitmaps\n'
            span_id: 662
          ) (Token id:Id.Lit_Chars val:'\t\tjgit gc\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:664)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'splitting packs does not generate bogus bitmaps' span_id:671))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:675) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-genrandom foo $((1024 * 1024)) >rand &&\n'
            span_id: 676
          ) (Token id:Id.Lit_Chars val:'\tgit add rand &&\n' span_id:677) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "commit with big file" &&\n'
            span_id: 678
          ) (Token id:Id.Lit_Chars val:'\tgit -c pack.packSizeLimit=500k repack -adb &&\n' span_id:679) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare no-bitmaps.git &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgit -C no-bitmaps.git fetch .. HEAD\n' span_id:681)
        )
      }
    )
    (C {(test_done)})
  ]
)