(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:'git rebase -p should preserve merges\n' span_id:14) 
                (Token id:Id.Lit_Chars val:'\n' span_id:15) 
                (Token
                  id: Id.Lit_Chars
                  val: 'Run "git rebase -p" and check that merges are properly carried along\n'
                  span_id: 16
                )
              )
            }
          spids: [12]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_AUTHOR_EMAIL)
          op: assign_op.Equal
          rhs: {(bogus_email_address)}
          spids: [24]
        )
      ]
    )
    (C {(export)} {(GIT_AUTHOR_EMAIL)})
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup for merge-preserving rebase' span_id:93))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'echo First > A &&\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\tgit add A &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add A1" &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b topic &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\techo Second > B &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\tgit add B &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add B1" &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f master &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\techo Third >> A &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Modify A2" &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\techo Fifth > B &&\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tgit add B &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add different B" &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit clone ./. clone2 &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:114) (Token id:Id.Lit_Chars val:'\t\tcd clone2 &&\n' span_id:115) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit checkout -b topic origin/topic &&\n'
            span_id: 116
          ) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git merge origin/master &&\n' span_id:117) 
          (Token id:Id.Lit_Chars val:'\t\techo Resolved >B &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\t\tgit add B &&\n' span_id:119) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit commit -m "Merge origin/master into topic"\n'
            span_id: 120
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\tgit clone ./. clone3 &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t(\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\t\tcd clone3 &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b topic2 origin/topic &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\t\techo Sixth > A &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "Modify A3" &&\n' span_id:128) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit checkout -b topic origin/topic &&\n'
            span_id: 129
          ) (Token id:Id.Lit_Chars val:'\t\tgit merge --no-ff topic2\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\tgit clone ./. clone4 &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\t(\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\t\tcd clone4 &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b topic2 origin/topic &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\t\techo Sixth > A &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "Modify A3" &&\n' span_id:138) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit checkout -b topic origin/topic &&\n'
            span_id: 139
          ) (Token id:Id.Lit_Chars val:'\t\tgit merge --no-ff topic2\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\tgit checkout topic &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\techo Fourth >> B &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Modify B2"\n' span_id:145)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--continue works after a conflict' span_id:152))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:157) (Token id:Id.Lit_Chars val:'\tcd clone2 &&\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'\tgit fetch &&\n' span_id:159) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rebase -p origin/topic &&\n' span_id:160) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 = $(git ls-files B | wc -l) &&\n'
            span_id: 161
          ) (Token id:Id.Lit_Chars val:'\techo Resolved again > B &&\n' span_id:162) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rebase --continue &&\n'
            span_id: 163
          ) (Token id:Id.Lit_Chars val:'\tgrep "^@@@ " .git/rebase-merge/patch &&\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\tgit add B &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\tgit rebase --continue &&\n' span_id:166) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'
            span_id: 167
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Add different" | wc -l) &&\n'
            span_id: 168
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge origin" | wc -l)\n'
            span_id: 169
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:170)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase -p preserves no-ff merges' span_id:177))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:181) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:182) (Token id:Id.Lit_Chars val:'\tcd clone3 &&\n' span_id:183) 
          (Token id:Id.Lit_Chars val:'\tgit fetch &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\tgit rebase -p origin/topic &&\n' span_id:185) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'
            span_id: 186
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge branch" | wc -l)\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:188)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'rebase -p ignores merge.log config' span_id:195))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:200) (Token id:Id.Lit_Chars val:'\tcd clone4 &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\tgit fetch &&\n' span_id:202) (Token id:Id.Lit_Chars val:'\tgit -c merge.log=1 rebase -p origin/topic &&\n' span_id:203) 
          (Token id:Id.Lit_Chars val:'\techo >expected &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\tgit log --format="%b" -1 >current &&\n' span_id:205) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:206) (Token id:Id.Lit_Chars val:'\t)\n' span_id:207)
        )
      }
    )
    (C {(test_done)})
  ]
)