-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dt/merge-recursive-case-insensitive' into maint
On a case insensitive filesystem, merge-recursive incorrectly deleted the file that is to be renamed to a name that is the same except for case differences. * dt/merge-recursive-case-insensitive: mv: allow renaming to fix case on case insensitive filesystems merge-recursive.c: fix case-changing merge bug
- Loading branch information
Showing
3 changed files
with
61 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#!/bin/sh | ||
|
||
test_description='git-merge with case-changing rename on case-insensitive file system' | ||
|
||
. ./test-lib.sh | ||
|
||
if ! test_have_prereq CASE_INSENSITIVE_FS | ||
then | ||
skip_all='skipping case insensitive tests - case sensitive file system' | ||
test_done | ||
fi | ||
|
||
test_expect_success 'merge with case-changing rename' ' | ||
test $(git config core.ignorecase) = true && | ||
>TestCase && | ||
git add TestCase && | ||
git commit -m "add TestCase" && | ||
git tag baseline | ||
git checkout -b with-camel && | ||
>foo && | ||
git add foo && | ||
git commit -m "intervening commit" && | ||
git checkout master && | ||
git rm TestCase && | ||
>testcase && | ||
git add testcase && | ||
git commit -m "rename to testcase" && | ||
git checkout with-camel && | ||
git merge master -m "merge" && | ||
test_path_is_file testcase | ||
' | ||
|
||
test_expect_success 'merge with case-changing rename on both sides' ' | ||
git checkout master && | ||
git reset --hard baseline && | ||
git branch -D with-camel && | ||
git checkout -b with-camel && | ||
git mv TestCase testcase && | ||
git commit -m "recase on branch" && | ||
>foo && | ||
git add foo && | ||
git commit -m "intervening commit" && | ||
git checkout master && | ||
git rm TestCase && | ||
>testcase && | ||
git add testcase && | ||
git commit -m "rename to testcase" && | ||
git checkout with-camel && | ||
git merge master -m "merge" && | ||
test_path_is_file testcase | ||
' | ||
|
||
test_done |