(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'Test merge without common ancestors'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_COMMITTER_DATE) op: assign_op.Equal rhs: {(DQ <'2006-12-12 23:28:00 +0100'>)} 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'>)} ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 126 stdin_parts: [<'<<<<<<< HEAD\n'> <'F\n'> <'=======\n'> <'G\n'> <'>>>>>>> G\n'>] ) ) ] do_fork: T ) (C {<test_expect_success>} {(DQ <'result contains a conflict'>)} {(DQ <'test_cmp expect a1'>)}) (command.Simple words: [{<git>} {<ls-files>} {<--stage>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<out>})] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 163 stdin_parts: [ <'100644 ec3fe2a791706733f2d8fa7ad45d9a9672031f5e 1\ta1\n'> <'100644 cf84443e49e1b366fac938711ddf4be2d4d1d9e9 2\ta1\n'> <'100644 fd7923529855d0b274795ae3349c5e0438333979 3\ta1\n'> ] ) ) ] do_fork: T ) (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>}) ] )