зеркало из https://github.com/microsoft/git.git
t6022: Add tests for reversing order of merges when D/F conflicts present
When merging two branches with some path involved in a D/F conflict, the choice of which branch to merge into the other matters for (at least) two reasons: (1) whether the working copy has a directory full of files that is in the way of a file, or a file exists that is in the way of a directory of files, (2) when the directory full of files does not disappear due to the merge, what files at the same paths should be renamed to (e.g. filename~HEAD vs. filename~otherbranch). Add some tests that reverse the merge order of two other tests, and which verify the contents are as expected (namely, that the results are identical other than modified-for-uniqueness filenames involving branch names). Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
af6e175199
Коммит
3398f2f583
|
@ -415,6 +415,28 @@ test_expect_failure 'Rename+D/F conflict; renamed file merges but dir in way' '
|
|||
test_cmp expected dir~HEAD
|
||||
'
|
||||
|
||||
test_expect_failure 'Same as previous, but merged other way' '
|
||||
git reset --hard &&
|
||||
rm -rf dir~* &&
|
||||
git checkout -q dir-in-way^0 &&
|
||||
test_must_fail git merge --strategy=recursive renamed-file-has-no-conflicts >output 2>errors &&
|
||||
|
||||
! grep "error: refusing to lose untracked file at" errors &&
|
||||
grep "CONFLICT (delete/modify): dir/file-in-the-way" output &&
|
||||
grep "Auto-merging dir" output &&
|
||||
grep "Adding as dir~renamed-file-has-no-conflicts instead" output &&
|
||||
|
||||
test 2 = "$(git ls-files -u | wc -l)" &&
|
||||
test 2 = "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
||||
|
||||
test_must_fail git diff --quiet &&
|
||||
test_must_fail git diff --cached --quiet &&
|
||||
|
||||
test -f dir/file-in-the-way &&
|
||||
test -f dir~renamed-file-has-no-conflicts &&
|
||||
test_cmp expected dir~renamed-file-has-no-conflicts
|
||||
'
|
||||
|
||||
cat >expected <<\EOF &&
|
||||
1
|
||||
2
|
||||
|
@ -469,4 +491,40 @@ test_expect_failure 'Rename+D/F conflict; renamed file cannot merge and dir in t
|
|||
test_cmp expected dir~HEAD
|
||||
'
|
||||
|
||||
cat >expected <<\EOF &&
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
7
|
||||
8
|
||||
9
|
||||
10
|
||||
<<<<<<< HEAD
|
||||
11
|
||||
=======
|
||||
12
|
||||
>>>>>>> renamed-file-has-conflicts
|
||||
EOF
|
||||
|
||||
test_expect_failure 'Same as previous, but merged other way' '
|
||||
git reset --hard &&
|
||||
rm -rf dir~* &&
|
||||
git checkout -q dir-in-way^0 &&
|
||||
test_must_fail git merge --strategy=recursive renamed-file-has-conflicts &&
|
||||
|
||||
test 5 = "$(git ls-files -u | wc -l)" &&
|
||||
test 3 = "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)" &&
|
||||
test 2 = "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
|
||||
|
||||
test_must_fail git diff --quiet &&
|
||||
test_must_fail git diff --cached --quiet &&
|
||||
|
||||
test -f dir/file-in-the-way &&
|
||||
test -f dir~renamed-file-has-conflicts &&
|
||||
test_cmp expected dir~renamed-file-has-conflicts
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче