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