(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>}) ] )