(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:-1 arg_word:{(expect)} spids:[112]) (HereDoc op_id: Redir_DLess fd: -1 body: {(DQ ("<<<<<<< HEAD\n") ("F\n") ("=======\n") ("G\n") (">>>>>>> G\n"))} do_expansion: True here_end: EOF was_filled: True 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:-1 arg_word:{(out)} spids:[143])] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[149]) (HereDoc op_id: Redir_DLess fd: -1 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: True spids: [153] ) ] ) (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)}) ] )