(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git merge\n'> <'\n'> <'Testing octopus merge with more than 25 refs.'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <setup>)} 
      {
        (SQ <'\n'> <'\techo c0 > c0.c &&\n'> <'\tgit add c0.c &&\n'> <'\tgit commit -m c0 &&\n'> 
          <'\tgit tag c0 &&\n'> <'\ti=1 &&\n'> <'\twhile test $i -le 30\n'> <'\tdo\n'> <'\t\tgit reset --hard c0 &&\n'> 
          <'\t\techo c$i > c$i.c &&\n'> <'\t\tgit add c$i.c &&\n'> <'\t\tgit commit -m c$i &&\n'> <'\t\tgit tag c$i &&\n'> 
          <'\t\ti=$(expr $i + 1) || return 1\n'> <'\tdone\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge c1 with c2, c3, c4, ... c29'>)} 
      {
        (SQ <'\n'> <'\tgit reset --hard c1 &&\n'> <'\ti=2 &&\n'> <'\trefs="" &&\n'> 
          <'\twhile test $i -le 30\n'> <'\tdo\n'> <'\t\trefs="$refs c$i"\n'> <'\t\ti=$(expr $i + 1)\n'> <'\tdone &&\n'> 
          <'\tgit merge $refs &&\n'> <'\ttest "$(git rev-parse c1)" != "$(git rev-parse HEAD)" &&\n'> <'\ti=1 &&\n'> 
          <'\twhile test $i -le 30\n'> <'\tdo\n'> <'\t\ttest "$(git rev-parse c$i)" = "$(git rev-parse HEAD^$i)" &&\n'> 
          <'\t\ti=$(expr $i + 1) || return 1\n'> <'\tdone &&\n'> <'\tgit diff --exit-code &&\n'> <'\ti=1 &&\n'> <'\twhile test $i -le 30\n'> <'\tdo\n'> 
          <'\t\ttest -f c$i.c &&\n'> <'\t\ti=$(expr $i + 1) || return 1\n'> <'\tdone\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[78])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('Trying simple merge with c2\n') ('Trying simple merge with c3\n') 
              ('Trying simple merge with c4\n') ("Merge made by the 'octopus' strategy.\n") (' c2.c | 1 +\n') (' c3.c | 1 +\n') (' c4.c | 1 +\n') 
              (' 3 files changed, 3 insertions(+)\n') (' create mode 100644 c2.c\n') (' create mode 100644 c3.c\n') (' create mode 100644 c4.c\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [81]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'merge output uses pretty names'>)} 
      {
        (SQ <'\n'> <'\tgit reset --hard c1 &&\n'> <'\tgit merge c2 c3 c4 >actual &&\n'> 
          <'\ttest_i18ncmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[102])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {("Merge made by the 'recursive' strategy.\n") (' c5.c | 1 +\n') 
              (' 1 file changed, 1 insertion(+)\n') (' create mode 100644 c5.c\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [105]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'merge reduces irrelevant remote heads'>)} 
      {
        (SQ <'\n'> <'\tGIT_MERGE_VERBOSITY=0 git merge c4 c5 >actual &&\n'> 
          <'\ttest_i18ncmp expected actual\n'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(expected)} spids:[125])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('Fast-forwarding to: c1\n') ('Trying simple merge with c2\n') 
              ("Merge made by the 'octopus' strategy.\n") (' c1.c | 1 +\n') (' c2.c | 1 +\n') (' 2 files changed, 2 insertions(+)\n') 
              (' create mode 100644 c1.c\n') (' create mode 100644 c2.c\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [128]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'merge fast-forward output uses pretty names'>)} 
      {
        (SQ <'\n'> <'\tgit reset --hard c0 &&\n'> <'\tgit merge c1 c2 >actual &&\n'> 
          <'\ttest_i18ncmp expected actual\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)