Merge branch 'cb/maint-merge-recursive-fix' into maint
* cb/maint-merge-recursive-fix: merge-recursive: do not clobber untracked working tree garbage modify/delete conflict resolution overwrites untracked file Conflicts: builtin-merge-recursive.c
This commit is contained in:
87
t/t7607-merge-overwrite.sh
Executable file
87
t/t7607-merge-overwrite.sh
Executable file
@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='git-merge
|
||||
|
||||
Do not overwrite changes.'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'setup' '
|
||||
echo c0 > c0.c &&
|
||||
git add c0.c &&
|
||||
git commit -m c0 &&
|
||||
git tag c0 &&
|
||||
echo c1 > c1.c &&
|
||||
git add c1.c &&
|
||||
git commit -m c1 &&
|
||||
git tag c1 &&
|
||||
git reset --hard c0 &&
|
||||
echo c2 > c2.c &&
|
||||
git add c2.c &&
|
||||
git commit -m c2 &&
|
||||
git tag c2 &&
|
||||
git reset --hard c1 &&
|
||||
echo "c1 a" > c1.c &&
|
||||
git add c1.c &&
|
||||
git commit -m "c1 a" &&
|
||||
git tag c1a &&
|
||||
echo "VERY IMPORTANT CHANGES" > important
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite untracked file' '
|
||||
git reset --hard c1 &&
|
||||
cat important > c2.c &&
|
||||
! git merge c2 &&
|
||||
test_cmp important c2.c
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite new file' '
|
||||
git reset --hard c1 &&
|
||||
cat important > c2.c &&
|
||||
git add c2.c &&
|
||||
! git merge c2 &&
|
||||
test_cmp important c2.c
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite staged changes' '
|
||||
git reset --hard c1 &&
|
||||
cat important > c2.c &&
|
||||
git add c2.c &&
|
||||
rm c2.c &&
|
||||
! git merge c2 &&
|
||||
git checkout c2.c &&
|
||||
test_cmp important c2.c
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite removed file' '
|
||||
git reset --hard c1 &&
|
||||
git rm c1.c &&
|
||||
git commit -m "rm c1.c" &&
|
||||
cat important > c1.c &&
|
||||
! git merge c1a &&
|
||||
test_cmp important c1.c
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite re-added file' '
|
||||
git reset --hard c1 &&
|
||||
git rm c1.c &&
|
||||
git commit -m "rm c1.c" &&
|
||||
cat important > c1.c &&
|
||||
git add c1.c &&
|
||||
! git merge c1a &&
|
||||
test_cmp important c1.c
|
||||
'
|
||||
|
||||
test_expect_success 'will not overwrite removed file with staged changes' '
|
||||
git reset --hard c1 &&
|
||||
git rm c1.c &&
|
||||
git commit -m "rm c1.c" &&
|
||||
cat important > c1.c &&
|
||||
git add c1.c &&
|
||||
rm c1.c &&
|
||||
! git merge c1a &&
|
||||
git checkout c1.c &&
|
||||
test_cmp important c1.c
|
||||
'
|
||||
|
||||
test_done
|
||||
Reference in New Issue
Block a user