diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-01-07 00:09:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-07 00:09:42 -0800 |
commit | ff32340669a5521ca2b4b547b4853bfe22f60386 (patch) | |
tree | bca331f6b19b2465ca5c71ab879ce03874f9be58 | |
parent | 4c6e8aa8f001fa9619dc891c501d0d4389583353 (diff) | |
parent | 36e3b5eafe967cb721f5e2bbaa396f979b8ebd7c (diff) | |
download | git-ff32340669a5521ca2b4b547b4853bfe22f60386.tar.gz git-ff32340669a5521ca2b4b547b4853bfe22f60386.tar.xz |
Merge branch 'js/maint-merge-recursive-r-d-conflict'
* js/maint-merge-recursive-r-d-conflict:
merge-recursive: mark rename/delete conflict as unmerged
-rw-r--r-- | merge-recursive.c | 5 | ||||
-rwxr-xr-x | t/t6024-recursive-merge.sh | 23 |
2 files changed, 28 insertions, 0 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index 2da433343..b97026bd5 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -934,6 +934,11 @@ static int process_renames(struct merge_options *o, ren1_src, ren1_dst, branch1, branch2); update_file(o, 0, ren1->pair->two->sha1, ren1->pair->two->mode, ren1_dst); + update_stages(ren1_dst, NULL, + branch1 == o->branch1 ? + ren1->pair->two : NULL, + branch1 == o->branch1 ? + NULL : ren1->pair->two, 1); } else if (!sha_eq(dst_other.sha1, null_sha1)) { const char *new_path; clean_merge = 0; diff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh index 802d0d06e..129fa3000 100755 --- a/t/t6024-recursive-merge.sh +++ b/t/t6024-recursive-merge.sh @@ -97,4 +97,27 @@ test_expect_success 'refuse to merge binary files' ' merge.err ' +test_expect_success 'mark rename/delete as unmerged' ' + + git reset --hard && + git checkout -b delete && + git rm a1 && + test_tick && + git commit -m delete && + git checkout -b rename HEAD^ && + git mv a1 a2 + test_tick && + git commit -m rename && + test_must_fail git merge delete && + test 1 = $(git ls-files --unmerged | wc -l) && + git rev-parse --verify :2:a2 && + test_must_fail git rev-parse --verify :3:a2 && + git checkout -f delete && + test_must_fail git merge rename && + test 1 = $(git ls-files --unmerged | wc -l) && + test_must_fail git rev-parse --verify :2:a2 && + git rev-parse --verify :3:a2 + +' + test_done |