aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-01-07 00:09:42 -0800
committerJunio C Hamano <gitster@pobox.com>2009-01-07 00:09:42 -0800
commitff32340669a5521ca2b4b547b4853bfe22f60386 (patch)
treebca331f6b19b2465ca5c71ab879ce03874f9be58
parent4c6e8aa8f001fa9619dc891c501d0d4389583353 (diff)
parent36e3b5eafe967cb721f5e2bbaa396f979b8ebd7c (diff)
downloadgit-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.c5
-rwxr-xr-xt/t6024-recursive-merge.sh23
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