(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'Test merge without common ancestors' span_id:6))} 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 (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'echo 1 > a1 &&\n' span_id:52) (Token id:Id.Lit_Chars val:'git add a1 &&\n' span_id:53) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:00" git commit -m 1 a1 &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\n' span_id:55) (Token id:Id.Lit_Chars val:'git checkout -b A master &&\n' span_id:56) (Token id:Id.Lit_Chars val:'echo A > a1 &&\n' span_id:57) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:01" git commit -m A a1 &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'git checkout -b B master &&\n' span_id:60) (Token id:Id.Lit_Chars val:'echo B > a1 &&\n' span_id:61) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:02" git commit -m B a1 &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'git checkout -b D A &&\n' span_id:64) (Token id:Id.Lit_Chars val:'git rev-parse B > .git/MERGE_HEAD &&\n' span_id:65) (Token id:Id.Lit_Chars val:'echo D > a1 &&\n' span_id:66) (Token id:Id.Lit_Chars val:'git update-index a1 &&\n' span_id:67) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:03" git commit -m D &&\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id: Id.Lit_Chars val: 'git symbolic-ref HEAD refs/heads/other &&\n' span_id: 70 ) (Token id:Id.Lit_Chars val:'echo 2 > a1 &&\n' span_id:71) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:04" git commit -m 2 a1 &&\n' span_id: 72 ) (Token id:Id.Lit_Chars val:'\n' span_id:73) (Token id:Id.Lit_Chars val:'git checkout -b C &&\n' span_id:74) (Token id:Id.Lit_Chars val:'echo C > a1 &&\n' span_id:75) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:05" git commit -m C a1 &&\n' span_id: 76 ) (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'git checkout -b E C &&\n' span_id:78) (Token id:Id.Lit_Chars val:'git rev-parse B > .git/MERGE_HEAD &&\n' span_id:79) (Token id:Id.Lit_Chars val:'echo E > a1 &&\n' span_id:80) (Token id:Id.Lit_Chars val:'git update-index a1 &&\n' span_id:81) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:06" git commit -m E &&\n' span_id: 82 ) (Token id:Id.Lit_Chars val:'\n' span_id:83) (Token id:Id.Lit_Chars val:'git checkout -b G E &&\n' span_id:84) (Token id:Id.Lit_Chars val:'git rev-parse A > .git/MERGE_HEAD &&\n' span_id:85) (Token id:Id.Lit_Chars val:'echo G > a1 &&\n' span_id:86) (Token id:Id.Lit_Chars val:'git update-index a1 &&\n' span_id:87) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:07" git commit -m G &&\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'git checkout -b F D &&\n' span_id:90) (Token id:Id.Lit_Chars val:'git rev-parse C > .git/MERGE_HEAD &&\n' span_id:91) (Token id:Id.Lit_Chars val:'echo F > a1 &&\n' span_id:92) (Token id:Id.Lit_Chars val:'git update-index a1 &&\n' span_id:93) (Token id: Id.Lit_Chars val: 'GIT_AUTHOR_DATE="2006-12-12 23:00:08" git commit -m F\n' span_id: 94 ) ) } ) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:112) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:116) fd: -1 here_begin: {(EOF)} here_end_span_id: 126 stdin_parts: [('<<<<<<< HEAD\n') ('F\n') ('=======\n') ('G\n') ('>>>>>>> G\n')] ) ] ) (C {(test_expect_success)} {(DQ ('result contains a conflict'))} {(DQ ('test_cmp expect a1'))}) (command.Simple words: [{(git)} {(ls-files)} {(--stage)}] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:145) fd:-1 arg_word:{(out)})] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:151) fd: -1 arg_word: {(expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:155) fd: -1 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') ] ) ] ) (C {(test_expect_success)} {(DQ ('virtual trees were processed'))} {(DQ ('test_cmp expect out'))}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'refuse to merge binary files' span_id:179))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:183) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\tprintf "\\0" > binary-file &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\tgit add binary-file &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tgit commit -m binary &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\tgit checkout G &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tprintf "\\0\\0" > binary-file &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\tgit add binary-file &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\tgit commit -m binary2 &&\n' span_id:191) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge F > merge.out 2> merge.err &&\n' span_id: 192 ) (Token id: Id.Lit_Chars val: '\tgrep "Cannot merge binary files: binary-file (HEAD vs. F)" merge.err\n' span_id: 193 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'mark rename/delete as unmerged' span_id:200))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) (Token id:Id.Lit_Chars val:'\n' span_id:205) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit checkout -b delete &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\tgit rm a1 &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\tgit commit -m delete &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit checkout -b rename HEAD^ &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\tgit mv a1 a2 &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\tgit commit -m rename &&\n' span_id:214) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge delete &&\n' span_id:215) (Token id: Id.Lit_Chars val: '\ttest 1 = $(git ls-files --unmerged | wc -l) &&\n' span_id: 216 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify :2:a2 &&\n' span_id:217) (Token id: Id.Lit_Chars val: '\ttest_must_fail git rev-parse --verify :3:a2 &&\n' span_id: 218 ) (Token id:Id.Lit_Chars val:'\tgit checkout -f delete &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge rename &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\ttest 1 = $(git ls-files --unmerged | wc -l) &&\n' span_id:221) (Token id: Id.Lit_Chars val: '\ttest_must_fail git rev-parse --verify :2:a2 &&\n' span_id: 222 ) (Token id:Id.Lit_Chars val:'\tgit rev-parse --verify :3:a2\n' span_id:223) (Token id:Id.Lit_Chars val:'\n' span_id:224) ) } ) (C {(test_done)}) ] )