mirror of
https://github.com/git/git
synced 2024-08-28 12:09:19 +00:00
![Johannes Sixt](/assets/img/avatar_default.png)
In t4023 and t4114, we have to remove the entries using 'git rm' because otherwise the entries that must turn from symbolic links to regular files would stay symbolic links in the index. For the same reason, we have to use 'git mv' instead of plain 'mv' in t3509. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
102 lines
2.3 KiB
Bash
Executable file
102 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='Test cherry-pick with directory/file conflicts'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'Initialize repository' '
|
|
mkdir a &&
|
|
>a/f &&
|
|
git add a &&
|
|
git commit -m a
|
|
'
|
|
|
|
test_expect_success 'Setup rename across paths each below D/F conflicts' '
|
|
mkdir b &&
|
|
test_ln_s_add ../a b/a &&
|
|
git commit -m b &&
|
|
|
|
git checkout -b branch &&
|
|
rm b/a &&
|
|
git mv a b/a &&
|
|
test_ln_s_add b/a a &&
|
|
git commit -m swap &&
|
|
|
|
>f1 &&
|
|
git add f1 &&
|
|
git commit -m f1
|
|
'
|
|
|
|
test_expect_success 'Cherry-pick succeeds with rename across D/F conflicts' '
|
|
git reset --hard &&
|
|
git checkout master^0 &&
|
|
git cherry-pick branch
|
|
'
|
|
|
|
test_expect_success 'Setup rename with file on one side matching directory name on other' '
|
|
git checkout --orphan nick-testcase &&
|
|
git rm -rf . &&
|
|
|
|
>empty &&
|
|
git add empty &&
|
|
git commit -m "Empty file" &&
|
|
|
|
git checkout -b simple &&
|
|
mv empty file &&
|
|
mkdir empty &&
|
|
mv file empty &&
|
|
git add empty/file &&
|
|
git commit -m "Empty file under empty dir" &&
|
|
|
|
echo content >newfile &&
|
|
git add newfile &&
|
|
git commit -m "New file"
|
|
'
|
|
|
|
test_expect_success 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)' '
|
|
git reset --hard &&
|
|
git checkout -q nick-testcase^0 &&
|
|
git cherry-pick --strategy=resolve simple
|
|
'
|
|
|
|
test_expect_success 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)' '
|
|
git reset --hard &&
|
|
git checkout -q nick-testcase^0 &&
|
|
git cherry-pick --strategy=recursive simple
|
|
'
|
|
|
|
test_expect_success 'Setup rename with file on one side matching different dirname on other' '
|
|
git reset --hard &&
|
|
git checkout --orphan mergeme &&
|
|
git rm -rf . &&
|
|
|
|
mkdir sub &&
|
|
mkdir othersub &&
|
|
echo content > sub/file &&
|
|
echo foo > othersub/whatever &&
|
|
git add -A &&
|
|
git commit -m "Common commmit" &&
|
|
|
|
git rm -rf othersub &&
|
|
git mv sub/file othersub &&
|
|
git commit -m "Commit to merge" &&
|
|
|
|
git checkout -b newhead mergeme~1 &&
|
|
>independent-change &&
|
|
git add independent-change &&
|
|
git commit -m "Completely unrelated change"
|
|
'
|
|
|
|
test_expect_success 'Cherry-pick with rename to different D/F conflict succeeds (resolve)' '
|
|
git reset --hard &&
|
|
git checkout -q newhead^0 &&
|
|
git cherry-pick --strategy=resolve mergeme
|
|
'
|
|
|
|
test_expect_success 'Cherry-pick with rename to different D/F conflict succeeds (recursive)' '
|
|
git reset --hard &&
|
|
git checkout -q newhead^0 &&
|
|
git cherry-pick --strategy=recursive mergeme
|
|
'
|
|
|
|
test_done
|