(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:'Testing multi_ack pack fetching' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: add
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
              ]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:name)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [40]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:text)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_At '$@'))}
                      spids: [46]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:branch)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:55)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(echo)} {($ Id.VSub_DollarName '$name')})
                                      (C {(sed)} {(-e)} 
                                        {
                                          (SQ 
                                            (Token
                                              id: Id.Lit_Chars
                                              val: 's/^\\(.\\).*$/\\1/'
                                              span_id: 67
                                            )
                                          )
                                        }
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [54]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:parents)
                      op: assign_op.Equal
                      rhs: {(DQ )}
                      spids: [74]
                    )
                  ]
                )
                (C {(shift)})
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:87)
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {($ Id.VSub_Number '$1')})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:92)
                    )
                  ]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:parents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$parents') (' -p ') 
                                        ($ Id.VSub_Number '$1')
                                      )
                                    }
                                  spids: [97]
                                )
                              ]
                            )
                            (C {(shift)})
                          ]
                        )
                      ]
                    )
                )
                (command.Simple
                  words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$text'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:122)
                      fd: -1
                      arg_word: {(test.txt)}
                    )
                  ]
                )
                (C {(git)} {(update-index)} {(--add)} {(test.txt)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:141)
                            command_list: (command.CommandList children:[(C {(git)} {(write-tree)})])
                          )
                        }
                      spids: [140]
                    )
                  ]
                )
                (C {(test_tick)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:160)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(echo)} {(DQ ($ Id.VSub_DollarName '$text'))})
                                      (C {(git)} {(commit-tree)} {($ Id.VSub_DollarName '$tree')} 
                                        {($ Id.VSub_DollarName '$parents')}
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [159]
                    )
                  ]
                )
                (C {(eval)} 
                  {
                    (DQ ($ Id.VSub_DollarName '$name') ('=') ($ Id.VSub_DollarName '$commit') 
                      ('; export ') ($ Id.VSub_DollarName '$name')
                    )
                  }
                )
                (command.Simple
                  words: [{(echo)} {($ Id.VSub_DollarName '$commit')}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:198)
                      fd: -1
                      arg_word: {(.git/refs/heads/) ($ Id.VSub_DollarName '$branch')}
                    )
                  ]
                )
                (C {(eval)} 
                  {(${ Id.VSub_Name branch) (Id.Lit_VarLike 'TIP=') ($ Id.VSub_DollarName '$commit')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: pull_to_client
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:number)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [225]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:heads)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$2')}
                      spids: [231]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:count)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$3')}
                      spids: [237]
                    )
                  ]
                )
                (C {(test_expect_success)} {(DQ ($ Id.VSub_DollarName '$number') (' pull'))} 
                  {
                    (SQ (Token id:Id.Lit_Chars val:'\n' span_id:251) 
                      (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:252) (Token id:Id.Lit_Chars val:'\t\t\tcd client &&\n' span_id:253) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tgit fetch-pack -k -v .. $heads &&\n'
                        span_id: 254
                      ) (Token id:Id.Lit_Chars val:'\n' span_id:255) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tcase "$heads" in\n'
                        span_id: 256
                      ) (Token id:Id.Lit_Chars val:'\t\t\t    *A*)\n' span_id:257) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t\t    echo $ATIP > .git/refs/heads/A;;\n'
                        span_id: 258
                      ) (Token id:Id.Lit_Chars val:'\t\t\tesac &&\n' span_id:259) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tcase "$heads" in *B*)\n'
                        span_id: 260
                      ) (Token id:Id.Lit_Chars val:'\t\t\t    echo $BTIP > .git/refs/heads/B;;\n' span_id:261) 
                      (Token id:Id.Lit_Chars val:'\t\t\tesac &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\t\t\tgit symbolic-ref HEAD refs/heads/$(echo $heads \\\n' span_id:263) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\t\t| sed -e "s/^\\(.\\).*$/\\1/") &&\n'
                        span_id: 264
                      ) (Token id:Id.Lit_Chars val:'\n' span_id:265) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tgit fsck --full &&\n'
                        span_id: 266
                      ) (Token id:Id.Lit_Chars val:'\n' span_id:267) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tmv .git/objects/pack/pack-* . &&\n'
                        span_id: 268
                      ) (Token id:Id.Lit_Chars val:'\t\t\tp=$(ls -1 pack-*.pack) &&\n' span_id:269) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tgit unpack-objects <$p &&\n'
                        span_id: 270
                      ) (Token id:Id.Lit_Chars val:'\t\t\tgit fsck --full &&\n' span_id:271) 
                      (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\t\tidx=$(echo pack-*.idx) &&\n' span_id:273) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\tpack_count=$(git show-index <$idx | wc -l) &&\n'
                        span_id: 274
                      ) (Token id:Id.Lit_Chars val:'\t\t\ttest $pack_count = $count &&\n' span_id:275) 
                      (Token
                        id: Id.Lit_Chars
                        val: '\t\t\trm -f pack-*\n'
                        span_id: 276
                      ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:277) (Token id:Id.Lit_Chars val:'\t' span_id:278)
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:305))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) 
          (Token id:Id.Lit_Chars val:'\tmkdir client &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\t(\n' span_id:311) 
          (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:312) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:313) 
          (Token id:Id.Lit_Chars val:'\t\tgit config transfer.unpacklimit 0\n' span_id:314) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:315) 
          (Token id:Id.Lit_Chars val:'\tadd A1 &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\tprev=1 &&\n' span_id:317) 
          (Token id:Id.Lit_Chars val:'\tcur=2 &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\twhile [ $cur -le 10 ]; do\n' span_id:319) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tadd A$cur $(eval echo \\$A$prev) &&\n'
            span_id: 320
          ) (Token id:Id.Lit_Chars val:'\t\tprev=$cur &&\n' span_id:321) 
          (Token id:Id.Lit_Chars val:'\t\tcur=$(($cur+1))\n' span_id:322) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\tadd B1 $A1 &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\techo $ATIP > .git/refs/heads/A &&\n' span_id:325) 
          (Token id:Id.Lit_Chars val:'\techo $BTIP > .git/refs/heads/B &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD refs/heads/B\n' span_id:327)
        )
      }
    )
    (C {(pull_to_client)} {(1st)} {(DQ ('refs/heads/B refs/heads/A'))} 
      {
        (word_part.ArithSub
          anode: 
            (arith_expr.Binary
              op_id: Id.Arith_Star
              left: (arith_expr.ArithWord w:{(Id.Lit_Digits 11)})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)})
            )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'post 1st pull setup' span_id:350))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:354) 
          (Token id:Id.Lit_Chars val:'\tadd A11 $A10 &&\n' span_id:355) (Token id:Id.Lit_Chars val:'\tprev=1 &&\n' span_id:356) 
          (Token id:Id.Lit_Chars val:'\tcur=2 &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\twhile [ $cur -le 65 ]; do\n' span_id:358) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tadd B$cur $(eval echo \\$B$prev) &&\n'
            span_id: 359
          ) (Token id:Id.Lit_Chars val:'\t\tprev=$cur &&\n' span_id:360) 
          (Token id:Id.Lit_Chars val:'\t\tcur=$(($cur+1))\n' span_id:361) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:362)
        )
      }
    )
    (C {(pull_to_client)} {(2nd)} {(DQ (refs/heads/B))} 
      {
        (word_part.ArithSub
          anode: 
            (arith_expr.Binary
              op_id: Id.Arith_Star
              left: (arith_expr.ArithWord w:{(Id.Lit_Digits 64)})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)})
            )
        )
      }
    )
    (C {(pull_to_client)} {(3rd)} {(DQ (refs/heads/A))} 
      {
        (word_part.ArithSub
          anode: 
            (arith_expr.Binary
              op_id: Id.Arith_Star
              left: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 3)})
            )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'single branch clone' span_id:401))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:405) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch "file://$(pwd)/." singlebranch\n'
            span_id: 406
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'single branch object count' span_id:413))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:417) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_DIR=singlebranch/.git git count-objects -v |\n'
            span_id: 418
          ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack:" > count.singlebranch &&\n' span_id:419) 
          (Token id:Id.Lit_Chars val:'\techo "in-pack: 198" >expected &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\ttest_cmp expected count.singlebranch\n' span_id:421)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'single given branch clone' span_id:428))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:432) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --single-branch --branch A "file://$(pwd)/." branch-a &&\n'
            span_id: 433
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git --git-dir=branch-a/.git rev-parse origin/B\n'
            span_id: 434
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth 1' span_id:441))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:445) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0 &&\n'
            span_id: 446
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git --git-dir=shallow0/.git rev-list --count HEAD)" = 1\n'
            span_id: 447
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth 1 with fsck' span_id:454))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:458) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --global fetch.fsckobjects true &&\n'
            span_id: 459
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --no-single-branch --depth 1 "file://$(pwd)/." shallow0fsck &&\n'
            span_id: 460
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git --git-dir=shallow0fsck/.git rev-list --count HEAD)" = 1 &&\n'
            span_id: 461
          ) (Token id:Id.Lit_Chars val:'\tgit config --global --unset fetch.fsckobjects\n' span_id:462)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow' span_id:469))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --no-single-branch --depth 2 "file://$(pwd)/." shallow\n'
            span_id: 474
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth count' span_id:481))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:485) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git --git-dir=shallow/.git rev-list --count HEAD)" = 2\n'
            span_id: 486
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:493))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:497) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:498) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:499) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:500) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:501) 
          (Token id:Id.Lit_Chars val:'\tgrep "^in-pack: 12" count.shallow\n' span_id:502)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count (part 2)' span_id:509))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:513) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "/^in-pack:/d" -e "/^packs:/d" -e "/^size-pack:/d" \\\n'
            span_id: 514
          ) (Token id:Id.Lit_Chars val:'\t    -e "/: 0$/d" count.shallow > count_output &&\n' span_id:515) 
          (Token id:Id.Lit_Chars val:'\t! test -s count_output\n' span_id:516)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fsck in shallow repo' span_id:523))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:528) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:529) 
          (Token id:Id.Lit_Chars val:'\t\tgit fsck --full\n' span_id:530) (Token id:Id.Lit_Chars val:'\t)\n' span_id:531)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'simple fetch in shallow repo' span_id:538))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:542) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:543) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:544) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch\n' span_id:545) (Token id:Id.Lit_Chars val:'\t)\n' span_id:546)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no changes expected' span_id:553))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:557) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:558) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:559) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:560) (Token id:Id.Lit_Chars val:'\t) > count.shallow.2 &&\n' span_id:561) 
          (Token id:Id.Lit_Chars val:'\tcmp count.shallow count.shallow.2\n' span_id:562)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch same depth in shallow repo' span_id:569))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:573) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:574) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:575) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=2\n' span_id:576) (Token id:Id.Lit_Chars val:'\t)\n' span_id:577)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'no changes expected' span_id:584))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:588) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:589) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:590) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:591) (Token id:Id.Lit_Chars val:'\t) > count.shallow.3 &&\n' span_id:592) 
          (Token id:Id.Lit_Chars val:'\tcmp count.shallow count.shallow.3\n' span_id:593)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add two more' span_id:600))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:604) 
          (Token id:Id.Lit_Chars val:'\tadd B66 $B65 &&\n' span_id:605) (Token id:Id.Lit_Chars val:'\tadd B67 $B66\n' span_id:606)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pull in shallow repo' span_id:613))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:617) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:618) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:619) 
          (Token id:Id.Lit_Chars val:'\t\tgit pull .. B\n' span_id:620) (Token id:Id.Lit_Chars val:'\t)\n' span_id:621)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:628))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:632) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:633) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:634) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:635) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:636) 
          (Token id:Id.Lit_Chars val:'\tgrep "^count: 6" count.shallow\n' span_id:637)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'add two more (part 2)' span_id:644))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:648) 
          (Token id:Id.Lit_Chars val:'\tadd B68 $B67 &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\tadd B69 $B68\n' span_id:650)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'deepening pull in shallow repo' span_id:657))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:662) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'\t\tgit pull --depth 4 .. B\n' span_id:664) (Token id:Id.Lit_Chars val:'\t)\n' span_id:665)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:672))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:676) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:677) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:678) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:679) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:680) 
          (Token id:Id.Lit_Chars val:'\tgrep "^count: 12" count.shallow\n' span_id:681)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'deepening fetch in shallow repo' span_id:688))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:692) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:693) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:694) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth 4 .. A:A\n' span_id:695) (Token id:Id.Lit_Chars val:'\t)\n' span_id:696)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:703))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:707) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:708) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:709) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:710) (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:711) 
          (Token id:Id.Lit_Chars val:'\tgrep "^count: 18" count.shallow\n' span_id:712)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pull in shallow repo with missing merge base' span_id:719))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:723) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:724) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:725) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth 4 .. A\n' span_id:726) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git merge --allow-unrelated-histories FETCH_HEAD\n'
            span_id: 727
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:728)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'additional simple shallow deepenings' span_id:735))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:739) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:740) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:741) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=8 &&\n' span_id:742) (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=10 &&\n' span_id:743) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --depth=11\n' span_id:744) (Token id:Id.Lit_Chars val:'\t)\n' span_id:745)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow depth count' span_id:752))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:756) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git --git-dir=shallow/.git rev-list --count HEAD)" = 11\n'
            span_id: 757
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:764))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:768) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:769) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:770) 
          (Token id:Id.Lit_Chars val:'\t\tgit prune &&\n' span_id:771) (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:772) 
          (Token id:Id.Lit_Chars val:'\t) > count.shallow &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\tgrep "^count: 54" count.shallow\n' span_id:774)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch --no-shallow on full repo' span_id:781))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:785) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git fetch --noshallow\n'
            span_id: 786
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch --depth --no-shallow' span_id:793))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:797) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:798) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:799) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git fetch --depth=1 --noshallow\n'
            span_id: 800
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:801)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'turn shallow to complete repository' span_id:808))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:812) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:813) (Token id:Id.Lit_Chars val:'\t\tcd shallow &&\n' span_id:814) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch --unshallow &&\n' span_id:815) (Token id:Id.Lit_Chars val:'\t\t! test -f .git/shallow &&\n' span_id:816) 
          (Token id:Id.Lit_Chars val:'\t\tgit fsck --full\n' span_id:817) (Token id:Id.Lit_Chars val:'\t)\n' span_id:818)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow without --no-single-branch' span_id:825))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:829) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 "file://$(pwd)/." shallow2\n'
            span_id: 830
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:837))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:841) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:842) (Token id:Id.Lit_Chars val:'\t\tcd shallow2 &&\n' span_id:843) 
          (Token id:Id.Lit_Chars val:'\t\tgit count-objects -v\n' span_id:844) (Token id:Id.Lit_Chars val:'\t) > count.shallow2 &&\n' span_id:845) 
          (Token id:Id.Lit_Chars val:'\tgrep "^in-pack: 3" count.shallow2\n' span_id:846)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow with --branch' span_id:853))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:857) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 --branch A "file://$(pwd)/." shallow3\n'
            span_id: 858
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow object count' span_id:865))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:869) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "in-pack: 3" > count3.expected &&\n'
            span_id: 870
          ) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow3/.git git count-objects -v |\n' span_id:871) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgrep "^in-pack" > count3.actual &&\n'
            span_id: 872
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp count3.expected count3.actual\n' span_id:873)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow with detached HEAD' span_id:880))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:884) 
          (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:885) (Token id:Id.Lit_Chars val:'\tgit clone --depth 1 "file://$(pwd)/." shallow5 &&\n' span_id:886) 
          (Token id:Id.Lit_Chars val:'\tgit checkout - &&\n' span_id:887) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow5/.git git rev-parse HEAD >actual &&\n' span_id:888) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^ >expected &&\n' span_id:889) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:890)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone pulling tags' span_id:897))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:901) 
          (Token id:Id.Lit_Chars val:'\tgit tag -a -m A TAGA1 A &&\n' span_id:902) (Token id:Id.Lit_Chars val:'\tgit tag -a -m B TAGB1 B &&\n' span_id:903) 
          (Token id:Id.Lit_Chars val:'\tgit tag TAGA2 A &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\tgit tag TAGB2 B &&\n' span_id:905) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 "file://$(pwd)/." shallow6 &&\n'
            span_id: 906
          ) (Token id:Id.Lit_Chars val:'\n' span_id:907) 
          (Token id:Id.Lit_Chars val:'\tcat >taglist.expected <<\\EOF &&\n' span_id:908) (Token id:Id.Lit_Chars val:'TAGB1\n' span_id:909) (Token id:Id.Lit_Chars val:'TAGB2\n' span_id:910) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:911) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow6/.git git tag -l >taglist.actual &&\n' span_id:912) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp taglist.expected taglist.actual &&\n'
            span_id: 913
          ) (Token id:Id.Lit_Chars val:'\n' span_id:914) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "in-pack: 4" > count6.expected &&\n'
            span_id: 915
          ) (Token id:Id.Lit_Chars val:'\tGIT_DIR=shallow6/.git git count-objects -v |\n' span_id:916) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgrep "^in-pack" > count6.actual &&\n'
            span_id: 917
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp count6.expected count6.actual\n' span_id:918)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow cloning single tag' span_id:925))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:929) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 --branch=TAGB1 "file://$(pwd)/." shallow7 &&\n'
            span_id: 930
          ) (Token id:Id.Lit_Chars val:'\tcat >taglist.expected <<\\EOF &&\n' span_id:931) 
          (Token id:Id.Lit_Chars val:'TAGB1\n' span_id:932) (Token id:Id.Lit_Chars val:'TAGB2\n' span_id:933) (Token id:Id.Lit_Chars val:'EOF\n' span_id:934) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_DIR=shallow7/.git git tag -l >taglist.actual &&\n'
            span_id: 935
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp taglist.expected taglist.actual &&\n' span_id:936) 
          (Token id:Id.Lit_Chars val:'\n' span_id:937) (Token id:Id.Lit_Chars val:'\techo "in-pack: 4" > count7.expected &&\n' span_id:938) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_DIR=shallow7/.git git count-objects -v |\n'
            span_id: 939
          ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack" > count7.actual &&\n' span_id:940) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp count7.expected count7.actual\n'
            span_id: 941
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone shallow with packed refs' span_id:948))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:952) 
          (Token id:Id.Lit_Chars val:'\tgit pack-refs --all &&\n' span_id:953) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 --branch A "file://$(pwd)/." shallow8 &&\n'
            span_id: 954
          ) (Token id:Id.Lit_Chars val:'\techo "in-pack: 4" > count8.expected &&\n' span_id:955) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_DIR=shallow8/.git git count-objects -v |\n'
            span_id: 956
          ) (Token id:Id.Lit_Chars val:'\t\tgrep "^in-pack" > count8.actual &&\n' span_id:957) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp count8.expected count8.actual\n'
            span_id: 958
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'fetch in shallow repo unreachable shallow objects'
            span_id: 965
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:969) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:970) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit clone --bare --branch B --single-branch "file://$(pwd)/." no-reflog &&\n'
            span_id: 971
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit clone --depth 1 "file://$(pwd)/no-reflog" shallow9 &&\n'
            span_id: 972
          ) (Token id:Id.Lit_Chars val:'\t\tcd no-reflog &&\n' span_id:973) 
          (Token id:Id.Lit_Chars val:'\t\tgit tag -d TAGB1 TAGB2 &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\t\tgit update-ref refs/heads/B B~~ &&\n' span_id:975) 
          (Token id:Id.Lit_Chars val:'\t\tgit gc --prune=now &&\n' span_id:976) (Token id:Id.Lit_Chars val:'\t\tcd ../shallow9 &&\n' span_id:977) 
          (Token id:Id.Lit_Chars val:'\t\tgit fetch origin &&\n' span_id:978) (Token id:Id.Lit_Chars val:'\t\tgit fsck --no-dangling\n' span_id:979) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:980)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch creating new shallow root' span_id:986))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:990) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:991) (Token id:Id.Lit_Chars val:'\t\tgit clone "file://$(pwd)/." shallow10 &&\n' span_id:992) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit commit --allow-empty -m empty &&\n'
            span_id: 993
          ) (Token id:Id.Lit_Chars val:'\t\tcd shallow10 &&\n' span_id:994) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch --depth=1 --progress 2>actual &&\n'
            span_id: 995
          ) (Token id:Id.Lit_Chars val:'\t\t# This should fetch only the empty commit, no tree or\n' span_id:996) 
          (Token id:Id.Lit_Chars val:'\t\t# blob objects\n' span_id:997) (Token id:Id.Lit_Chars val:'\t\tgrep "remote: Total 1" actual\n' span_id:998) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:999)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup tests for the --stdin parameter' span_id:1006))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1010) 
          (Token id:Id.Lit_Chars val:'\tfor head in C D E F\n' span_id:1011) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:1012) 
          (Token id:Id.Lit_Chars val:'\t\tadd $head\n' span_id:1013) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:1014) 
          (Token id:Id.Lit_Chars val:'\tfor head in A B C D E F\n' span_id:1015) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:1016) 
          (Token id:Id.Lit_Chars val:'\t\tgit tag $head $head\n' span_id:1017) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:1018) 
          (Token id:Id.Lit_Chars val:'\tcat >input <<-\\EOF &&\n' span_id:1019) (Token id:Id.Lit_Chars val:'\trefs/heads/C\n' span_id:1020) 
          (Token id:Id.Lit_Chars val:'\trefs/heads/A\n' span_id:1021) (Token id:Id.Lit_Chars val:'\trefs/heads/D\n' span_id:1022) 
          (Token id:Id.Lit_Chars val:'\trefs/tags/C\n' span_id:1023) (Token id:Id.Lit_Chars val:'\trefs/heads/B\n' span_id:1024) 
          (Token id:Id.Lit_Chars val:'\trefs/tags/A\n' span_id:1025) (Token id:Id.Lit_Chars val:'\trefs/heads/E\n' span_id:1026) 
          (Token id:Id.Lit_Chars val:'\trefs/tags/B\n' span_id:1027) (Token id:Id.Lit_Chars val:'\trefs/tags/E\n' span_id:1028) 
          (Token id:Id.Lit_Chars val:'\trefs/tags/D\n' span_id:1029) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1030) 
          (Token id:Id.Lit_Chars val:'\tsort <input >expect &&\n' span_id:1031) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1032) 
          (Token id:Id.Lit_Chars val:'\t\techo refs/heads/E &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\t\techo refs/tags/E &&\n' span_id:1034) 
          (Token id:Id.Lit_Chars val:'\t\tcat input\n' span_id:1035) (Token id:Id.Lit_Chars val:'\t) >input.dup\n' span_id:1036)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch refs from cmdline' span_id:1043))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1047) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1048) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1049) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch-pack --no-progress .. $(cat ../input)\n'
            span_id: 1050
          ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1051) 
          (Token
            id: Id.Lit_Chars
            val: '\tcut -d " " -f 2 <output | sort >actual &&\n'
            span_id: 1052
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1053)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch refs from stdin' span_id:1060))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1064) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1065) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1066) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch-pack --stdin --no-progress .. <../input\n'
            span_id: 1067
          ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1068) 
          (Token
            id: Id.Lit_Chars
            val: '\tcut -d " " -f 2 <output | sort >actual &&\n'
            span_id: 1069
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1070)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch mixed refs from cmdline and stdin' span_id:1077))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1081) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1082) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1083) 
          (Token id:Id.Lit_Chars val:'\t\ttail -n +5 ../input |\n' span_id:1084) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch-pack --stdin --no-progress .. $(head -n 4 ../input)\n'
            span_id: 1085
          ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1086) 
          (Token
            id: Id.Lit_Chars
            val: '\tcut -d " " -f 2 <output | sort >actual &&\n'
            span_id: 1087
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1088)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test duplicate refs from stdin' span_id:1095))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1099) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1100) (Token id:Id.Lit_Chars val:'\tcd client &&\n' span_id:1101) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit fetch-pack --stdin --no-progress .. <../input.dup\n'
            span_id: 1102
          ) (Token id:Id.Lit_Chars val:'\t) >output &&\n' span_id:1103) 
          (Token
            id: Id.Lit_Chars
            val: '\tcut -d " " -f 2 <output | sort >actual &&\n'
            span_id: 1104
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1105)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'set up tests of missing reference' span_id:1112))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1116) 
          (Token id:Id.Lit_Chars val:'\tcat >expect-error <<-\\EOF\n' span_id:1117) (Token id:Id.Lit_Chars val:'\terror: no such remote ref refs/heads/xyzzy\n' span_id:1118) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1119)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test lonely missing ref' span_id:1126))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1130) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1131) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1132) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy\n'
            span_id: 1133
          ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-m &&\n' span_id:1134) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-m\n' span_id:1135)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test missing ref after existing' span_id:1142))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1146) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1147) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1148) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/A refs/heads/xyzzy\n'
            span_id: 1149
          ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-em &&\n' span_id:1150) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-em\n' span_id:1151)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test missing ref before existing' span_id:1158))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1162) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1163) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1164) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t\ttest_must_fail git fetch-pack --no-progress .. refs/heads/xyzzy refs/heads/A\n'
            span_id: 1165
          ) (Token id:Id.Lit_Chars val:'\t) >/dev/null 2>error-me &&\n' span_id:1166) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect-error error-me\n' span_id:1167)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --all, --depth, and explicit head' span_id:1174))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1178) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:1179) (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1180) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch-pack --no-progress --all --depth=1 .. refs/heads/A\n'
            span_id: 1181
          ) (Token id:Id.Lit_Chars val:'\t) >out-adh 2>error-adh\n' span_id:1182)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test --all, --depth, and explicit tag' span_id:1189))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1193) 
          (Token id:Id.Lit_Chars val:'\tgit tag OLDTAG refs/heads/B~5 &&\n' span_id:1194) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1195) 
          (Token id:Id.Lit_Chars val:'\t\tcd client &&\n' span_id:1196) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch-pack --no-progress --all --depth=1 .. refs/tags/OLDTAG\n'
            span_id: 1197
          ) (Token id:Id.Lit_Chars val:'\t) >out-adt 2>error-adt\n' span_id:1198)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'shallow fetch with tags does not break the repository'
            span_id: 1205
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1209) 
          (Token id:Id.Lit_Chars val:'\tmkdir repo1 &&\n' span_id:1210) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1211) 
          (Token id:Id.Lit_Chars val:'\t\tcd repo1 &&\n' span_id:1212) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1213) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit 1 &&\n' span_id:1214) (Token id:Id.Lit_Chars val:'\t\ttest_commit 2 &&\n' span_id:1215) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit 3 &&\n' span_id:1216) (Token id:Id.Lit_Chars val:'\t\tmkdir repo2 &&\n' span_id:1217) 
          (Token id:Id.Lit_Chars val:'\t\tcd repo2 &&\n' span_id:1218) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1219) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit fetch --depth=2 ../.git master:branch &&\n'
            span_id: 1220
          ) (Token id:Id.Lit_Chars val:'\t\tgit fsck\n' span_id:1221) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:1222)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch-pack can fetch a raw sha1' span_id:1229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1233) 
          (Token id:Id.Lit_Chars val:'\tgit init hidden &&\n' span_id:1234) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1235) 
          (Token id:Id.Lit_Chars val:'\t\tcd hidden &&\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t\ttest_commit 1 &&\n' span_id:1237) 
          (Token id:Id.Lit_Chars val:'\t\ttest_commit 2 &&\n' span_id:1238) (Token id:Id.Lit_Chars val:'\t\tgit update-ref refs/hidden/one HEAD^ &&\n' span_id:1239) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit config transfer.hiderefs refs/hidden &&\n'
            span_id: 1240
          ) (Token id:Id.Lit_Chars val:'\t\tgit config uploadpack.allowtipsha1inwant true\n' span_id:1241) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1242) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit fetch-pack hidden $(git -C hidden rev-parse refs/hidden/one)\n'
            span_id: 1243
          )
        )
      }
    )
    (command.ShFunction
      name: check_prot_path
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1257)
                      fd: -1
                      arg_word: {(expected)}
                    )
                    (redir.HereDoc
                      op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:1260)
                      fd: -1
                      here_begin: {(EOF)}
                      here_end_span_id: 1275
                      stdin_parts: [
                        ('Diag: url=')
                        ($ Id.VSub_Number '$1')
                        ('\n')
                        ('Diag: protocol=')
                        ($ Id.VSub_Number '$2')
                        ('\n')
                        ('Diag: path=')
                        ($ Id.VSub_Number '$3')
                        ('\n')
                      ]
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {(git)} {(fetch-pack)} {(--diag-url)} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.Simple
                      words: [{(grep)} {(-v)} {(Id.Lit_VarLike 'hostandport=')}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:1295)
                          fd: -1
                          arg_word: {(actual)}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
                (C {(test_cmp)} {(expected)} {(actual)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: check_prot_host_port_path
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$2'))}
              arms: [
                (case_arm
                  pat_list: [{(Id.Lit_Star '*') (ssh) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pp)
                          op: assign_op.Equal
                          rhs: {(ssh)}
                          spids: [1333]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:uah)
                          op: assign_op.Equal
                          rhs: {(userandhost)}
                          spids: [1337]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ehost)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1342)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {($ Id.VSub_Number '$3')})
                                          (C {(tr)} {(-d)} {(DQ ('[]'))})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1341]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:diagport)
                          op: assign_op.Equal
                          rhs: {(DQ ('Diag: port=') ($ Id.VSub_Number '$4'))}
                          spids: [1359]
                        )
                      ]
                    )
                  ]
                  spids: [1327 1330 1366 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pp)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$p')}
                          spids: [1373]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:uah)
                          op: assign_op.Equal
                          rhs: {(hostandport)}
                          spids: [1377]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ehost)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1382)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {($ Id.VSub_Number '$3') ($ Id.VSub_Number '$4')})
                                          (C {(sed)} {(-e)} {(DQ (s/22) (Id.Lit_Other '$') ('/:22/'))} 
                                            {(-e)} {(DQ (s/NONE//))}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1381]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:diagport)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1408]
                        )
                      ]
                    )
                  ]
                  spids: [1369 1370 1413 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1421)
                      fd: -1
                      arg_word: {(exp)}
                    )
                    (redir.HereDoc
                      op: (Token id:Id.Redir_DLessDash val:'<<-' span_id:1424)
                      fd: -1
                      here_begin: {(EOF)}
                      here_end_span_id: 1446
                      stdin_parts: [
                        ('Diag: url=')
                        ($ Id.VSub_Number '$1')
                        ('\n')
                        ('Diag: protocol=')
                        ($ Id.VSub_DollarName '$pp')
                        ('\n')
                        ('Diag: ')
                        ($ Id.VSub_DollarName '$uah')
                        ('=')
                        ($ Id.VSub_DollarName '$ehost')
                        ('\n')
                        ($ Id.VSub_DollarName '$diagport')
                        ('\n')
                        ('Diag: path=')
                        ($ Id.VSub_Number '$5')
                        ('\n')
                      ]
                    )
                  ]
                )
                (command.Simple
                  words: [{(grep)} {(-v)} {(DQ ('^') (Id.Lit_Other '$'))} {(exp)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1459)
                      fd: -1
                      arg_word: {(expected)}
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [{(git)} {(fetch-pack)} {(--diag-url)} {(DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1473)
                      fd: -1
                      arg_word: {(actual)}
                    )
                  ]
                )
                (C {(test_cmp)} {(expected)} {(actual)})
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: r
      iter_words: [{(repo)} {(re) (Id.Lit_Other ':') (po)} {(re/po)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ForEach
              iter_name: p
              iter_words: [{(DQ ('ssh+git'))} {(DQ ('git+ssh'))} {(git)} {(ssh)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ForEach
                      iter_name: h
                      iter_words: [
                        {(host)}
                        {(user) (Id.Lit_Splice '@host')}
                        {(user) (Id.Lit_Other '@') (Id.Lit_LBracket '[') (Id.Lit_Other ':') 
                          (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')
                        }
                        {(user) (Id.Lit_Other '@') (Id.Lit_Other ':') (Id.Lit_Other ':') (1)}
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ForEach
                              iter_name: c
                              iter_words: [{(DQ )} {(Id.Lit_Other ':')}]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (C {(test_expect_success)} 
                                      {
                                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') 
                                          ('://') ($ Id.VSub_DollarName '$h') ($ Id.VSub_DollarName '$c') (/) ($ Id.VSub_DollarName '$r')
                                        )
                                      } 
                                      {
                                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1588) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'\t\t\t\t\tcheck_prot_host_port_path $p://$h/$r $p "$h" NONE "/$r"\n'
                                            span_id: 1589
                                          ) (Token id:Id.Lit_Chars val:'\t\t\t\t' span_id:1590)
                                        )
                                      }
                                    )
                                    (C {(test_expect_success)} 
                                      {
                                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') 
                                          ('://') ($ Id.VSub_DollarName '$h') ($ Id.VSub_DollarName '$c') ('/~') ($ Id.VSub_DollarName '$r')
                                        )
                                      } 
                                      {
                                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1611) 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'\t\t\t\t\tcheck_prot_host_port_path $p://$h/~$r $p "$h" NONE "~$r"\n'
                                            span_id: 1612
                                          ) (Token id:Id.Lit_Chars val:'\t\t\t\t' span_id:1613)
                                        )
                                      }
                                    )
                                  ]
                                )
                            )
                          ]
                        )
                    )
                    (command.ForEach
                      iter_name: h
                      iter_words: [
                        {(host)}
                        {(User) (Id.Lit_Splice '@host')}
                        {(User) (Id.Lit_Other '@') (Id.Lit_LBracket '[') (Id.Lit_Other ':') 
                          (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(test_expect_success)} 
                              {
                                (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') 
                                  ($ Id.VSub_DollarName '$h') (':22/') ($ Id.VSub_DollarName '$r')
                                )
                              } 
                              {
                                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1658) 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: 
'\t\t\t\tcheck_prot_host_port_path $p://$h:22/$r $p "$h" 22 "/$r"\n'
                                    span_id: 1659
                                  ) (Token id:Id.Lit_Chars val:'\t\t\t' span_id:1660)
                                )
                              }
                            )
                          ]
                        )
                    )
                  ]
                )
            )
            (command.ForEach
              iter_name: p
              iter_words: [{(file)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') 
                          ($ Id.VSub_DollarName '$h') (/) ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1698) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\t\tcheck_prot_path $p://$h/$r $p "/$r"\n'
                            span_id: 1699
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1700)
                        )
                      }
                    )
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$p') ('://') 
                          ($ Id.VSub_DollarName '$h') ('/~') ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1720) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\t\tcheck_prot_path $p://$h/~$r $p "/~$r"\n'
                            span_id: 1721
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1722)
                        )
                      }
                    )
                  ]
                )
            )
            (command.ForEach
              iter_name: h
              iter_words: [
                {(nohost)}
                {(nohost) (Id.Lit_Other ':') (12)}
                {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')}
                {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']') 
                  (Id.Lit_Other ':') (23)
                }
                {(Id.Lit_LBracket '[')}
                {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (aa)}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ./') ($ Id.VSub_DollarName '$h') (':') 
                          ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1779) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\t\tcheck_prot_path ./$h:$r $p "./$h:$r"\n'
                            span_id: 1780
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1781)
                        )
                      }
                    )
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ./') ($ Id.VSub_DollarName '$p') (':') 
                          ($ Id.VSub_DollarName '$h') ('/~') ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1801) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\tcheck_prot_path ./$p:$h/~$r $p "./$p:$h/~$r"\n'
                            span_id: 1802
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1803)
                        )
                      }
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:p)
                  op: assign_op.Equal
                  rhs: {(ssh)}
                  spids: [1814]
                )
              ]
            )
            (command.ForEach
              iter_name: h
              iter_words: [
                {(host)}
                {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (Id.Lit_Other ':') (1) (Id.Lit_RBracket ']')}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$h') (':') 
                          ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1846) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\t\tcheck_prot_host_port_path $h:$r $p "$h" NONE "$r"\n'
                            span_id: 1847
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1848)
                        )
                      }
                    )
                    (C {(test_expect_success)} 
                      {
                        (DQ ('fetch-pack --diag-url ') ($ Id.VSub_DollarName '$h') (':/~') 
                          ($ Id.VSub_DollarName '$r')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1866) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\t\t\tcheck_prot_host_port_path $h:/~$r $p "$h" NONE "~$r"\n'
                            span_id: 1867
                          ) (Token id:Id.Lit_Chars val:'\t\t' span_id:1868)
                        )
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {(test_expect_success)} {(MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch-pack --diag-url file://c:/repo' span_id:1882))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1886) 
          (Token
            id: Id.Lit_Chars
            val: '\tcheck_prot_path file://c:/repo file c:/repo\n'
            span_id: 1887
          )
        )
      }
    )
    (C {(test_expect_success)} {(MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch-pack --diag-url c:repo' span_id:1895))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1899) 
          (Token id:Id.Lit_Chars val:'\tcheck_prot_path c:repo file c:repo\n' span_id:1900)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone shallow since ...' span_id:1907))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1911) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-since &&\n' span_id:1912) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1913) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-since &&\n' span_id:1914) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="100000000 +0700" git commit --allow-empty -m one &&\n'
            span_id: 1915
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="200000000 +0700" git commit --allow-empty -m two &&\n'
            span_id: 1916
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_COMMITTER_DATE="300000000 +0700" git commit --allow-empty -m three &&\n'
            span_id: 1917
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --shallow-since "300000000 +0700" "file://$(pwd)/." ../shallow11 &&\n'
            span_id: 1918
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C ../shallow11 log --pretty=tformat:%s HEAD >actual &&\n'
            span_id: 1919
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1920) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1921) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1922)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch shallow since ...' span_id:1929))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1933) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow11 fetch --shallow-since "200000000 +0700" origin &&\n'
            span_id: 1934
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow11 log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 1935
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:1936) 
          (Token id:Id.Lit_Chars val:'\tthree\n' span_id:1937) (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:1938) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1939) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1940)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'shallow clone exclude tag two' span_id:1947))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1951) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_create_repo shallow-exclude &&\n'
            span_id: 1952
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1953) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-exclude &&\n' span_id:1954) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:1955) 
          (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:1956) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:1957) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --shallow-exclude two "file://$(pwd)/." ../shallow12 &&\n'
            span_id: 1958
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C ../shallow12 log --pretty=tformat:%s HEAD >actual &&\n'
            span_id: 1959
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1960) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1961) (Token id:Id.Lit_Chars val:'\t)\n' span_id:1962)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetch exclude tag one' span_id:1969))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1973) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow12 fetch --shallow-exclude one origin &&\n'
            span_id: 1974
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C shallow12 log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 1975
          ) (Token id:Id.Lit_Chars val:'\ttest_write_lines three two >expected &&\n' span_id:1976) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1977)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fetching deepen' span_id:1984))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1988) 
          (Token id:Id.Lit_Chars val:'\ttest_create_repo shallow-deepen &&\n' span_id:1989) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1990) 
          (Token id:Id.Lit_Chars val:'\tcd shallow-deepen &&\n' span_id:1991) (Token id:Id.Lit_Chars val:'\ttest_commit one &&\n' span_id:1992) 
          (Token id:Id.Lit_Chars val:'\ttest_commit two &&\n' span_id:1993) (Token id:Id.Lit_Chars val:'\ttest_commit three &&\n' span_id:1994) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --depth 1 "file://$(pwd)/." deepen &&\n'
            span_id: 1995
          ) (Token id:Id.Lit_Chars val:'\ttest_commit four &&\n' span_id:1996) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C deepen log --pretty=tformat:%s master >actual &&\n'
            span_id: 1997
          ) (Token id:Id.Lit_Chars val:'\techo three >expected &&\n' span_id:1998) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1999) (Token id:Id.Lit_Chars val:'\tgit -C deepen fetch --deepen=1 &&\n' span_id:2000) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C deepen log --pretty=tformat:%s origin/master >actual &&\n'
            span_id: 2001
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:2002) 
          (Token id:Id.Lit_Chars val:'\tfour\n' span_id:2003) (Token id:Id.Lit_Chars val:'\tthree\n' span_id:2004) 
          (Token id:Id.Lit_Chars val:'\ttwo\n' span_id:2005) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:2006) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:2007) (Token id:Id.Lit_Chars val:'\t)\n' span_id:2008)
        )
      }
    )
    (C {(test_done)})
  ]
)