(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"Test merge without common ancestors">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:GIT_COMMITTER_DATE)
          op: Equal
          rhs: {(DQ ("2006-12-12 23:28:00 +0100"))}
          spids: [34]
        )
      ]
      spids: [34]
    )
    (C {(export)} {(GIT_COMMITTER_DATE)})
    (C {(test_expect_success)} {(DQ ("setup tests"))} 
      {
        (SQ <"\n"> <"echo 1 > a1 &&\n"> <"git add a1 &&\n"> 
          <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:00\" git commit -m 1 a1 &&\n"> <"\n"> <"git checkout -b A master &&\n"> <"echo A > a1 &&\n"> 
          <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:01\" git commit -m A a1 &&\n"> <"\n"> <"git checkout -b B master &&\n"> <"echo B > a1 &&\n"> 
          <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:02\" git commit -m B a1 &&\n"> <"\n"> <"git checkout -b D A &&\n"> <"git rev-parse B > .git/MERGE_HEAD &&\n"> <"echo D > a1 &&\n"> 
          <"git update-index a1 &&\n"> <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:03\" git commit -m D &&\n"> <"\n"> 
          <"git symbolic-ref HEAD refs/heads/other &&\n"> <"echo 2 > a1 &&\n"> <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:04\" git commit -m 2 a1 &&\n"> <"\n"> 
          <"git checkout -b C &&\n"> <"echo C > a1 &&\n"> <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:05\" git commit -m C a1 &&\n"> <"\n"> 
          <"git checkout -b E C &&\n"> <"git rev-parse B > .git/MERGE_HEAD &&\n"> <"echo E > a1 &&\n"> <"git update-index a1 &&\n"> 
          <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:06\" git commit -m E &&\n"> <"\n"> <"git checkout -b G E &&\n"> <"git rev-parse A > .git/MERGE_HEAD &&\n"> <"echo G > a1 &&\n"> 
          <"git update-index a1 &&\n"> <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:07\" git commit -m G &&\n"> <"\n"> <"git checkout -b F D &&\n"> 
          <"git rev-parse C > .git/MERGE_HEAD &&\n"> <"echo F > a1 &&\n"> <"git update-index a1 &&\n"> 
          <"GIT_AUTHOR_DATE=\"2006-12-12 23:00:08\" git commit -m F\n">
        )
      }
    )
    (C {(test_expect_success)} {(DQ ("combined merge conflicts"))} 
      {(DQ ("\n") ("\ttest_must_fail git merge -m final G\n"))}
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[112])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("<<<<<<< HEAD\n") ("F\n") ("=======\n") ("G\n") (">>>>>>> G\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [116]
        )
      ]
    )
    (C {(test_expect_success)} {(DQ ("result contains a conflict"))} {(DQ ("test_cmp expect a1"))})
    (SimpleCommand
      words: [{(git)} {(ls-files)} {(--stage)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(out)} spids:[143])]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[149])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("100644 ec3fe2a791706733f2d8fa7ad45d9a9672031f5e 1\ta1\n") 
                ("100644 cf84443e49e1b366fac938711ddf4be2d4d1d9e9 2\ta1\n") ("100644 fd7923529855d0b274795ae3349c5e0438333979 3\ta1\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [153]
        )
      ]
    )
    (C {(test_expect_success)} {(DQ ("virtual trees were processed"))} {(DQ ("test_cmp expect out"))})
    (C {(test_expect_success)} {(SQ <"refuse to merge binary files">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\tprintf \"\\0\" > binary-file &&\n"> 
          <"\tgit add binary-file &&\n"> <"\tgit commit -m binary &&\n"> <"\tgit checkout G &&\n"> <"\tprintf \"\\0\\0\" > binary-file &&\n"> 
          <"\tgit add binary-file &&\n"> <"\tgit commit -m binary2 &&\n"> <"\ttest_must_fail git merge F > merge.out 2> merge.err &&\n"> 
          <"\tgrep \"Cannot merge binary files: binary-file (HEAD vs. F)\" merge.err\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"mark rename/delete as unmerged">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit reset --hard &&\n"> <"\tgit checkout -b delete &&\n"> 
          <"\tgit rm a1 &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m delete &&\n"> <"\tgit checkout -b rename HEAD^ &&\n"> 
          <"\tgit mv a1 a2 &&\n"> <"\ttest_tick &&\n"> <"\tgit commit -m rename &&\n"> <"\ttest_must_fail git merge delete &&\n"> 
          <"\ttest 1 = $(git ls-files --unmerged | wc -l) &&\n"> <"\tgit rev-parse --verify :2:a2 &&\n"> <"\ttest_must_fail git rev-parse --verify :3:a2 &&\n"> 
          <"\tgit checkout -f delete &&\n"> <"\ttest_must_fail git merge rename &&\n"> <"\ttest 1 = $(git ls-files --unmerged | wc -l) &&\n"> 
          <"\ttest_must_fail git rev-parse --verify :2:a2 &&\n"> <"\tgit rev-parse --verify :3:a2\n"> <"\n">
        )
      }
    )
    (C {(test_done)})
  ]
)