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>
Elijah Newren committed
Jun 30, 2018 at 18:24 UTC
92702392cefdbd66ca593fa909540230ef9e005e
2 files changed
+3
-3
merge-recursive.c
+2
-2
@@ -1984,9 +1984,9 @@ int merge_trees(struct merge_options *o,
1984
struct strbuf sb = STRBUF_INIT;
1985
1986
if (!o->call_depth && index_has_changes(&the_index, &sb)) {
1987
- err(o, _("Dirty index: cannot merge (dirty: %s)"),
1987
+ err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
1988
sb.buf);
1989
- return 0;
1989
+ return -1;
1990
}
1991
output(o, 0, _("Already up to date!"));
1992
*result = head;
t/t6044-merge-unrelated-index-changes.sh
+1
-1
@@ -116,7 +116,7 @@ test_expect_success 'recursive' '
116
test_path_is_missing .git/MERGE_HEAD
117
'
118
119
-test_expect_failure 'recursive, when merge branch matches merge base' '
119
+test_expect_success 'recursive, when merge branch matches merge base' '
120
git reset --hard &&
121
git checkout B^0 &&
122