t6042: Add a testcase where git deletes an untracked file
Current git will nuke an untracked file during a rename/delete conflict if (a) there is an untracked file whose name matches the source of a rename and (b) the merge is done in a certain direction. Add a simple testcase demonstrating this bug. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
d8ead15963
commit
695576fddd
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='recursive merge corner cases'
|
test_description='recursive merge corner cases involving criss-cross merges'
|
||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description="recursive merge corner cases w/ renames but not criss-crosses"
|
||||||
|
# t6036 has corner cases that involve both criss-cross merges and renames
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup rename/delete + untracked file' '
|
||||||
|
echo "A pretty inscription" >ring &&
|
||||||
|
git add ring &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m beginning &&
|
||||||
|
|
||||||
|
git branch people &&
|
||||||
|
git checkout -b rename-the-ring &&
|
||||||
|
git mv ring one-ring-to-rule-them-all &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m fullname &&
|
||||||
|
|
||||||
|
git checkout people &&
|
||||||
|
git rm ring &&
|
||||||
|
echo gollum >owner &&
|
||||||
|
git add owner &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m track-people-instead-of-objects &&
|
||||||
|
echo "Myyy PRECIOUSSS" >ring
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_failure "Does git preserve Gollum's precious artifact?" '
|
||||||
|
test_must_fail git merge -s recursive rename-the-ring &&
|
||||||
|
|
||||||
|
# Make sure git did not delete an untracked file
|
||||||
|
test -f ring
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue