(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Test merge with directory/file conflicts">)} spids: [13] ) ] spids: [13] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"prepare repository">)} { (SQ <"\n"> <"\techo Hello >init &&\n"> <"\tgit add init &&\n"> <"\tgit commit -m initial &&\n"> <"\n"> <"\tgit branch B &&\n"> <"\tmkdir dir &&\n"> <"\techo foo >dir/foo &&\n"> <"\tgit add dir/foo &&\n"> <"\tgit commit -m \"File: dir/foo\" &&\n"> <"\n"> <"\tgit checkout B &&\n"> <"\techo file dir >dir &&\n"> <"\tgit add dir &&\n"> <"\tgit commit -m \"File: dir\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"Merge with d/f conflicts">)} {(SQ <"\n"> <"\ttest_expect_code 1 git merge -m \"merge msg\" master\n">)} ) (C {(test_expect_success)} {(SQ <"F/D conflict">)} { (SQ <"\n"> <"\tgit reset --hard &&\n"> <"\tgit checkout master &&\n"> <"\trm .git/index &&\n"> <"\n"> <"\tmkdir before &&\n"> <"\techo FILE >before/one &&\n"> <"\techo FILE >after &&\n"> <"\tgit add . &&\n"> <"\tgit commit -m first &&\n"> <"\n"> <"\trm -f after &&\n"> <"\tgit mv before after &&\n"> <"\tgit commit -m move &&\n"> <"\n"> <"\tgit checkout -b para HEAD^ &&\n"> <"\techo COMPLETELY ANOTHER FILE >another &&\n"> <"\tgit add . &&\n"> <"\tgit commit -m para &&\n"> <"\n"> <"\tgit merge master\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup modify/delete + directory/file conflict">)} { (SQ <"\n"> <"\tgit checkout --orphan modify &&\n"> <"\tgit rm -rf . &&\n"> <"\tgit clean -fdqx &&\n"> <"\n"> <"\tprintf \"a\\nb\\nc\\nd\\ne\\nf\\ng\\nh\\n\" >letters &&\n"> <"\tgit add letters &&\n"> <"\tgit commit -m initial &&\n"> <"\n"> <"\t# Throw in letters.txt for sorting order fun\n"> <"\t# (\"letters.txt\" sorts between \"letters\" and \"letters/file\")\n"> <"\techo i >>letters &&\n"> <"\techo \"version 2\" >letters.txt &&\n"> <"\tgit add letters letters.txt &&\n"> <"\tgit commit -m modified &&\n"> <"\n"> <"\tgit checkout -b delete HEAD^ &&\n"> <"\tgit rm letters &&\n"> <"\tmkdir letters &&\n"> <"\t>letters/file &&\n"> <"\techo \"version 1\" >letters.txt &&\n"> <"\tgit add letters letters.txt &&\n"> <"\tgit commit -m deleted\n"> ) } ) (C {(test_expect_success)} {(SQ <"modify/delete + directory/file conflict">)} { (SQ <"\n"> <"\tgit checkout delete^0 &&\n"> <"\ttest_must_fail git merge modify &&\n"> <"\n"> <"\ttest 5 -eq $(git ls-files -s | wc -l) &&\n"> <"\ttest 4 -eq $(git ls-files -u | wc -l) &&\n"> <"\ttest 1 -eq $(git ls-files -o | wc -l) &&\n"> <"\n"> <"\ttest -f letters/file &&\n"> <"\ttest -f letters.txt &&\n"> <"\ttest -f letters~modify\n"> ) } ) (C {(test_expect_success)} {(SQ <"modify/delete + directory/file conflict; other way">)} { (SQ <"\n"> <"\t# Yes, we really need the double reset since \"letters\" appears as\n"> <"\t# both a file and a directory.\n"> <"\tgit reset --hard &&\n"> <"\tgit reset --hard &&\n"> <"\tgit clean -f &&\n"> <"\tgit checkout modify^0 &&\n"> <"\n"> <"\ttest_must_fail git merge delete &&\n"> <"\n"> <"\ttest 5 -eq $(git ls-files -s | wc -l) &&\n"> <"\ttest 4 -eq $(git ls-files -u | wc -l) &&\n"> <"\ttest 1 -eq $(git ls-files -o | wc -l) &&\n"> <"\n"> <"\ttest -f letters/file &&\n"> <"\ttest -f letters.txt &&\n"> <"\ttest -f letters~HEAD\n"> ) } ) (C {(test_done)}) ] )