(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:'See why rewinding head breaks send-pack\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:cnt) op:assign_op.Equal rhs:{(64)} spids:[24])]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tmkdir mozart mozart/is &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\techo "Commit #0" >mozart/is/pink &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit update-index --add mozart/is/pink &&\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\ttree=$(git write-tree) &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tcommit=$(echo "Commit #0" | git commit-tree $tree) &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\tzero=$commit &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tparent=$zero &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\twhile test $i -le $cnt\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:43) (Token id:Id.Lit_Chars val:'\t    i=$(($i+1)) &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\t    test_tick &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t    echo "Commit #$i" >mozart/is/pink &&\n' span_id:46) 
          (Token
            id: Id.Lit_Chars
            val: '\t    git update-index --add mozart/is/pink &&\n'
            span_id: 47
          ) (Token id:Id.Lit_Chars val:'\t    tree=$(git write-tree) &&\n' span_id:48) 
          (Token
            id: Id.Lit_Chars
            val: '\t    commit=$(echo "Commit #$i" | git commit-tree $tree -p $parent) &&\n'
            span_id: 49
          ) (Token id:Id.Lit_Chars val:'\t    git update-ref refs/tags/commit$i $commit &&\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\t    parent=$commit || return 1\n' span_id:51) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\tgit update-ref HEAD "$commit" &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tgit clone ./. victim &&\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\t( cd victim && git config receive.denyCurrentBranch warn && git log ) &&\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\tgit update-ref HEAD "$zero" &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\tparent=$zero &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\twhile test $i -le $cnt\n' span_id:59) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\t    i=$(($i+1)) &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\t    test_tick &&\n' span_id:62) 
          (Token
            id: Id.Lit_Chars
            val: '\t    echo "Rebase #$i" >mozart/is/pink &&\n'
            span_id: 63
          ) (Token id:Id.Lit_Chars val:'\t    git update-index --add mozart/is/pink &&\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\t    tree=$(git write-tree) &&\n' span_id:65) 
          (Token
            id: Id.Lit_Chars
            val: '\t    commit=$(echo "Rebase #$i" | git commit-tree $tree -p $parent) &&\n'
            span_id: 66
          ) (Token id:Id.Lit_Chars val:'\t    git update-ref refs/tags/rebase$i $commit &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\t    parent=$commit || return 1\n' span_id:68) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tgit update-ref HEAD "$commit" &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\techo Rebase &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit log' span_id:72)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack the source repository' span_id:79))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\tgit repack -a -d &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tgit prune\n' span_id:85)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack the destination repository' span_id:92))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'    (\n' span_id:97) (Token id:Id.Lit_Chars val:'\tcd victim &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\tgit repack -a -d &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\tgit prune\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'    )\n' span_id:101)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'refuse pushing rewound head without --force' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token
            id: Id.Lit_Chars
            val: '\tpushed_head=$(git rev-parse --verify master) &&\n'
            span_id: 113
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tvictim_orig=$(cd victim && git rev-parse --verify master) &&\n'
            span_id: 114
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git send-pack ./victim master &&\n' span_id:115) 
          (Token
            id: Id.Lit_Chars
            val: '\tvictim_head=$(cd victim && git rev-parse --verify master) &&\n'
            span_id: 116
          ) (Token id:Id.Lit_Chars val:'\ttest "$victim_head" = "$victim_orig" &&\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\t# this should update\n' span_id:118) (Token id:Id.Lit_Chars val:'\tgit send-pack --force ./victim master &&\n' span_id:119) 
          (Token
            id: Id.Lit_Chars
            val: '\tvictim_head=$(cd victim && git rev-parse --verify master) &&\n'
            span_id: 120
          ) (Token id:Id.Lit_Chars val:'\ttest "$victim_head" = "$pushed_head"\n' span_id:121)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push can be used to delete a ref' span_id:128))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:132) 
          (Token
            id: Id.Lit_Chars
            val: '\t( cd victim && git branch extra master ) &&\n'
            span_id: 133
          ) (Token id:Id.Lit_Chars val:'\tgit send-pack ./victim :extra master &&\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\t( cd victim &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t  test_must_fail git rev-parse --verify extra )\n' span_id:136)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'refuse deleting push with denyDeletes' span_id:143))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:148) (Token id:Id.Lit_Chars val:'\t    cd victim &&\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\t    ( git branch -D extra || : ) &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\t    git config receive.denyDeletes true &&\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\t    git branch extra master\n' span_id:152) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:153) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git send-pack ./victim :extra master\n'
            span_id: 154
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'cannot override denyDeletes with git -c send-pack'
            span_id: 161
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:166) (Token id:Id.Lit_Chars val:'\t\tcd victim &&\n' span_id:167) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_might_fail git branch -D extra &&\n'
            span_id: 168
          ) (Token id:Id.Lit_Chars val:'\t\tgit config receive.denyDeletes true &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\t\tgit branch extra master\n' span_id:170) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git -c receive.denyDeletes=false \\\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'\t\t\t\t\tsend-pack ./victim :extra master\n' span_id:173)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'override denyDeletes with git -c receive-pack' span_id:180))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:185) (Token id:Id.Lit_Chars val:'\t\tcd victim &&\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_might_fail git branch -D extra &&\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\t\tgit config receive.denyDeletes true &&\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\t\tgit branch extra master\n' span_id:189) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\tgit send-pack \\\n' span_id:191) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t--receive-pack="git -c receive.denyDeletes=false receive-pack" \\\n'
            span_id: 192
          ) (Token id:Id.Lit_Chars val:'\t\t./victim :extra master\n' span_id:193)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'denyNonFastforwards trumps --force' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:205) (Token id:Id.Lit_Chars val:'\t    cd victim &&\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\t    ( git branch -D extra || : ) &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\t    git config receive.denyNonFastforwards true\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:209) 
          (Token
            id: Id.Lit_Chars
            val: '\tvictim_orig=$(cd victim && git rev-parse --verify master) &&\n'
            span_id: 210
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git send-pack --force ./victim master^:master &&\n'
            span_id: 211
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tvictim_head=$(cd victim && git rev-parse --verify master) &&\n'
            span_id: 212
          ) (Token id:Id.Lit_Chars val:'\ttest "$victim_orig" = "$victim_head"\n' span_id:213)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'send-pack --all sends all branches' span_id:220))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:224) 
          (Token
            id: Id.Lit_Chars
            val: '\t# make sure we have at least 2 branches with different\n'
            span_id: 225
          ) (Token id:Id.Lit_Chars val:'\t# values, just to be thorough\n' span_id:226) 
          (Token id:Id.Lit_Chars val:'\tgit branch other-branch HEAD^ &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\n' span_id:228) 
          (Token id:Id.Lit_Chars val:'\tgit init --bare all.git &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\tgit send-pack --all all.git &&\n' span_id:230) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit for-each-ref refs/heads >expect &&\n'
            span_id: 231
          ) (Token id:Id.Lit_Chars val:'\tgit -C all.git for-each-ref refs/heads >actual &&\n' span_id:232) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:233)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'push --all excludes remote-tracking hierarchy' span_id:240))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:244) 
          (Token id:Id.Lit_Chars val:'\tmkdir parent &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\t(\n' span_id:246) 
          (Token id:Id.Lit_Chars val:'\t    cd parent &&\n' span_id:247) 
          (Token
            id: Id.Lit_Chars
            val: '\t    git init && : >file && git add file && git commit -m add\n'
            span_id: 248
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:249) 
          (Token id:Id.Lit_Chars val:'\tgit clone parent child &&\n' span_id:250) (Token id:Id.Lit_Chars val:'\t(\n' span_id:251) 
          (Token id:Id.Lit_Chars val:'\t    cd child && git push --all\n' span_id:252) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:253) (Token id:Id.Lit_Chars val:'\t(\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\t    cd parent &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t    test -z "$(git for-each-ref refs/remotes/origin)"\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:257)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'receive-pack runs auto-gc in remote repo' span_id:264))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\trm -rf parent child &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\tgit init parent &&\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:271) (Token id:Id.Lit_Chars val:'\t    # Setup a repo with 2 packs\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t    cd parent &&\n' span_id:273) (Token id:Id.Lit_Chars val:'\t    echo "Some text" >file.txt &&\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t    git add . &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\t    git commit -m "Initial commit" &&\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\t    git repack -adl &&\n' span_id:277) (Token id:Id.Lit_Chars val:'\t    echo "Some more text" >>file.txt &&\n' span_id:278) 
          (Token
            id: Id.Lit_Chars
            val: '\t    git commit -a -m "Second commit" &&\n'
            span_id: 279
          ) (Token id:Id.Lit_Chars val:'\t    git repack\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:281) (Token id:Id.Lit_Chars val:'\tcp -R parent child &&\n' span_id:282) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:283) 
          (Token
            id: Id.Lit_Chars
            val: '\t    # Set the child to auto-pack if more than one pack exists\n'
            span_id: 284
          ) (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:285) 
          (Token
            id: Id.Lit_Chars
            val: '\t    git config gc.autopacklimit 1 &&\n'
            span_id: 286
          ) (Token id:Id.Lit_Chars val:'\t    git config gc.autodetach false &&\n' span_id:287) 
          (Token id:Id.Lit_Chars val:'\t    git branch test_auto_gc &&\n' span_id:288) 
          (Token
            id: Id.Lit_Chars
            val: '\t    # And create a file that follows the temporary object naming\n'
            span_id: 289
          ) (Token id:Id.Lit_Chars val:'\t    # convention for the auto-gc to remove\n' span_id:290) 
          (Token
            id: Id.Lit_Chars
            val: '\t    : >.git/objects/tmp_test_object &&\n'
            span_id: 291
          ) (Token id:Id.Lit_Chars val:'\t    test-chmtime =-1209601 .git/objects/tmp_test_object\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\t(\n' span_id:294) 
          (Token id:Id.Lit_Chars val:'\t    cd parent &&\n' span_id:295) (Token id:Id.Lit_Chars val:'\t    echo "Even more text" >>file.txt &&\n' span_id:296) 
          (Token
            id: Id.Lit_Chars
            val: '\t    git commit -a -m "Third commit" &&\n'
            span_id: 297
          ) (Token id:Id.Lit_Chars val:'\t    git send-pack ../child HEAD:refs/heads/test_auto_gc\n' span_id:298) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:299) (Token id:Id.Lit_Chars val:'\ttest ! -e child/.git/objects/tmp_test_object\n' span_id:300)
        )
      }
    )
    (command.ShFunction
      name: rewound_push_setup
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(rm)} {(-rf)} {(parent)} {(child)})
                (C {(mkdir)} {(parent)})
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      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
                          ]
                          children: [
                            (C {(cd)} {(parent)})
                            (C {(git)} {(init)})
                            (command.Simple
                              words: [{(echo)} {(one)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:350)
                                  fd: -1
                                  arg_word: {(file)}
                                )
                              ]
                            )
                            (C {(git)} {(add)} {(file)})
                            (C {(git)} {(commit)} {(-m)} {(one)})
                            (C {(git)} {(config)} {(receive.denyCurrentBranch)} {(warn)})
                            (command.Simple
                              words: [{(echo)} {(two)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:389)
                                  fd: -1
                                  arg_word: {(file)}
                                )
                              ]
                            )
                            (C {(git)} {(commit)} {(-a)} {(-m)} {(two)})
                          ]
                        )
                      ]
                    )
                )
                (C {(git)} {(clone)} {(parent)} {(child)})
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DAmp]
                          children: [
                            (C {(cd)} {(child)})
                            (C {(git)} {(reset)} {(--hard)} {(HEAD) (Id.Lit_Other '^')})
                          ]
                        )
                      ]
                    )
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pushing explicit refspecs respects forcing' span_id:448))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:452) 
          (Token id:Id.Lit_Chars val:'\trewound_push_setup &&\n' span_id:453) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_orig=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 454
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:455) 
          (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:456) (Token id:Id.Lit_Chars val:'\t    test_must_fail git send-pack ../parent \\\n' span_id:457) 
          (Token
            id: Id.Lit_Chars
            val: '\t\trefs/heads/master:refs/heads/master\n'
            span_id: 458
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:459) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_head=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 460
          ) (Token id:Id.Lit_Chars val:'\ttest "$parent_orig" = "$parent_head" &&\n' span_id:461) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:462) (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:463) 
          (Token id:Id.Lit_Chars val:'\t    git send-pack ../parent \\\n' span_id:464) (Token id:Id.Lit_Chars val:'\t        +refs/heads/master:refs/heads/master\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:466) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_head=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 467
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tchild_head=$(cd child && git rev-parse --verify master) &&\n'
            span_id: 468
          ) (Token id:Id.Lit_Chars val:'\ttest "$parent_head" = "$child_head"\n' span_id:469)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pushing wildcard refspecs respects forcing' span_id:476))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:480) 
          (Token id:Id.Lit_Chars val:'\trewound_push_setup &&\n' span_id:481) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_orig=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 482
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:483) 
          (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:484) (Token id:Id.Lit_Chars val:'\t    test_must_fail git send-pack ../parent \\\n' span_id:485) 
          (Token id:Id.Lit_Chars val:'\t        "refs/heads/*:refs/heads/*"\n' span_id:486) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:487) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_head=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 488
          ) (Token id:Id.Lit_Chars val:'\ttest "$parent_orig" = "$parent_head" &&\n' span_id:489) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:490) (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:491) 
          (Token id:Id.Lit_Chars val:'\t    git send-pack ../parent \\\n' span_id:492) (Token id:Id.Lit_Chars val:'\t        "+refs/heads/*:refs/heads/*"\n' span_id:493) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:494) 
          (Token
            id: Id.Lit_Chars
            val: '\tparent_head=$(cd parent && git rev-parse --verify master) &&\n'
            span_id: 495
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tchild_head=$(cd child && git rev-parse --verify master) &&\n'
            span_id: 496
          ) (Token id:Id.Lit_Chars val:'\ttest "$parent_head" = "$child_head"\n' span_id:497)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'deny pushing to delete current branch' span_id:504))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:508) 
          (Token id:Id.Lit_Chars val:'\trewound_push_setup &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\t(\n' span_id:510) 
          (Token id:Id.Lit_Chars val:'\t    cd child &&\n' span_id:511) 
          (Token
            id: Id.Lit_Chars
            val: '\t    test_must_fail git send-pack ../parent :refs/heads/master 2>errs\n'
            span_id: 512
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:513)
        )
      }
    )
    (C {(test_done)})
  ]
)