summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Elijah Newren <newren@gmail.com>2018-06-30 18:24:59 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2018-07-11 09:38:36 -0700
commit92702392cefdbd66ca593fa909540230ef9e005e (patch)
tree2903cd89eb8e7a0287c0f0545eaeef4aa84cc12f
parentt6044: add a testcase for index matching head, when head doesn't match HEAD (diff)
downloadtgif-92702392cefdbd66ca593fa909540230ef9e005e.tar.xz
merge-recursive: make sure when we say we abort that we actually abort
In commit 65170c07d4 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21), it was noted that there was a special case when merge-recursive didn't rely on unpack_trees() to enforce the index == HEAD requirement, and thus that it needed to do that enforcement itself. Unfortunately, it returned the wrong exit status, signalling that the merge completed but had conflicts, rather than that it was aborted. Fix the return code, and while we're at it, change the error message to match what unpack_trees() would have printed. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--merge-recursive.c4
-rwxr-xr-xt/t6044-merge-unrelated-index-changes.sh2
2 files changed, 3 insertions, 3 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 32529ca5b6..2fb1bdb010 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1984,9 +1984,9 @@ int merge_trees(struct merge_options *o,
struct strbuf sb = STRBUF_INIT;
if (!o->call_depth && index_has_changes(&the_index, &sb)) {
- err(o, _("Dirty index: cannot merge (dirty: %s)"),
+ err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
sb.buf);
- return 0;
+ return -1;
}
output(o, 0, _("Already up to date!"));
*result = head;
diff --git a/t/t6044-merge-unrelated-index-changes.sh b/t/t6044-merge-unrelated-index-changes.sh
index 97f7460b02..d55f1649f0 100755
--- a/t/t6044-merge-unrelated-index-changes.sh
+++ b/t/t6044-merge-unrelated-index-changes.sh
@@ -116,7 +116,7 @@ test_expect_success 'recursive' '
test_path_is_missing .git/MERGE_HEAD
'
-test_expect_failure 'recursive, when merge branch matches merge base' '
+test_expect_success 'recursive, when merge branch matches merge base' '
git reset --hard &&
git checkout B^0 &&