(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:16777215 arg_word:{(expect)} spids:[112])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: {(DQ ('<<<<<<< HEAD\n') ('F\n') ('=======\n') ('G\n') ('>>>>>>> G\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: T
          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:16777215 arg_word:{(out)} spids:[144])]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expect)} spids:[150])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          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: T
          spids: [154]
        )
      ]
    )
    (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)})
  ]
)