(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <'git rebase -p should preserve merges\n'> <'\n'> 
                <'Run "git rebase -p" and check that merges are properly carried along\n'>
              )
            }
          spids: [12]
        )
      ]
      spids: [12]
    )
    (C {(.)} {(./test-lib.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_AUTHOR_EMAIL)
          op: Equal
          rhs: {(bogus_email_address)}
          spids: [24]
        )
      ]
      spids: [24]
    )
    (C {(export)} {(GIT_AUTHOR_EMAIL)})
    (C {(test_expect_success)} {(SQ <'setup for merge-preserving rebase'>)} 
      {
        (SQ <'echo First > A &&\n'> <'\tgit add A &&\n'> <'\tgit commit -m "Add A1" &&\n'> 
          <'\tgit checkout -b topic &&\n'> <'\techo Second > B &&\n'> <'\tgit add B &&\n'> <'\tgit commit -m "Add B1" &&\n'> 
          <'\tgit checkout -f master &&\n'> <'\techo Third >> A &&\n'> <'\tgit commit -a -m "Modify A2" &&\n'> <'\techo Fifth > B &&\n'> 
          <'\tgit add B &&\n'> <'\tgit commit -m "Add different B" &&\n'> <'\n'> <'\tgit clone ./. clone2 &&\n'> <'\t(\n'> 
          <'\t\tcd clone2 &&\n'> <'\t\tgit checkout -b topic origin/topic &&\n'> <'\t\ttest_must_fail git merge origin/master &&\n'> 
          <'\t\techo Resolved >B &&\n'> <'\t\tgit add B &&\n'> <'\t\tgit commit -m "Merge origin/master into topic"\n'> <'\t) &&\n'> <'\n'> 
          <'\tgit clone ./. clone3 &&\n'> <'\t(\n'> <'\t\tcd clone3 &&\n'> <'\t\tgit checkout -b topic2 origin/topic &&\n'> 
          <'\t\techo Sixth > A &&\n'> <'\t\tgit commit -a -m "Modify A3" &&\n'> <'\t\tgit checkout -b topic origin/topic &&\n'> 
          <'\t\tgit merge --no-ff topic2\n'> <'\t) &&\n'> <'\n'> <'\tgit clone ./. clone4 &&\n'> <'\t(\n'> <'\t\tcd clone4 &&\n'> 
          <'\t\tgit checkout -b topic2 origin/topic &&\n'> <'\t\techo Sixth > A &&\n'> <'\t\tgit commit -a -m "Modify A3" &&\n'> 
          <'\t\tgit checkout -b topic origin/topic &&\n'> <'\t\tgit merge --no-ff topic2\n'> <'\t) &&\n'> <'\n'> <'\tgit checkout topic &&\n'> 
          <'\techo Fourth >> B &&\n'> <'\tgit commit -a -m "Modify B2"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'--continue works after a conflict'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\tcd clone2 &&\n'> <'\tgit fetch &&\n'> 
          <'\ttest_must_fail git rebase -p origin/topic &&\n'> <'\ttest 2 = $(git ls-files B | wc -l) &&\n'> <'\techo Resolved again > B &&\n'> 
          <'\ttest_must_fail git rebase --continue &&\n'> <'\tgrep "^@@@ " .git/rebase-merge/patch &&\n'> <'\tgit add B &&\n'> <'\tgit rebase --continue &&\n'> 
          <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'> <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Add different" | wc -l) &&\n'> 
          <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge origin" | wc -l)\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'rebase -p preserves no-ff merges'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\tcd clone3 &&\n'> <'\tgit fetch &&\n'> 
          <'\tgit rebase -p origin/topic &&\n'> <'\ttest 3 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&\n'> 
          <'\ttest 1 = $(git rev-list --all --pretty=oneline | grep "Merge branch" | wc -l)\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'rebase -p ignores merge.log config'>)} 
      {
        (SQ <'\n'> <'\t(\n'> <'\tcd clone4 &&\n'> <'\tgit fetch &&\n'> 
          <'\tgit -c merge.log=1 rebase -p origin/topic &&\n'> <'\techo >expected &&\n'> <'\tgit log --format="%b" -1 >current &&\n'> 
          <'\ttest_cmp expected current\n'> <'\t)\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)