(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git merge\n'> <'\n'> <'Testing octopus merge with more than 25 refs.'>)}
          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'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 96
              stdin_parts: [
                <'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_fork: T
    )
    (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'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 125
              stdin_parts: [
                <'Merge made by the \'recursive\' strategy.\n'>
                <' c5.c | 1 +\n'>
                <' 1 file changed, 1 insertion(+)\n'>
                <' create mode 100644 c5.c\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.MultiLine
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 157
              stdin_parts: [
                <'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_fork: T
    )
    (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>})
  ]
)