aboutsummaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-01-05 13:28:09 -0800
committerJunio C Hamano <gitster@pobox.com>2018-01-05 13:28:09 -0800
commit843d94b3cd30e61c7c4879f9bc6d013021b9350a (patch)
tree8e9700c13e1b66580c1cb729f0274fe6bb5567a9 /merge-recursive.c
parentfa62d0392b6f69e5c2ba0885bd85e670c28e9546 (diff)
parentb6825b5c8e8b58943511f2576475accf1593486e (diff)
downloadgit-843d94b3cd30e61c7c4879f9bc6d013021b9350a.tar.gz
git-843d94b3cd30e61c7c4879f9bc6d013021b9350a.tar.xz
Merge branch 'ew/empty-merge-with-dirty-index'
"git merge -s recursive" did not correctly abort when the index is dirty, if the merged tree happened to be the same as the current HEAD, which has been fixed. * ew/empty-merge-with-dirty-index: merge-recursive: avoid incorporating uncommitted changes in a merge move index_has_changes() from builtin/am.c to merge.c for reuse t6044: recursive can silently incorporate dirty changes in a merge
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 2ecf495cc..780f81a8b 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1952,6 +1952,13 @@ int merge_trees(struct merge_options *o,
}
if (oid_eq(&common->object.oid, &merge->object.oid)) {
+ struct strbuf sb = STRBUF_INIT;
+
+ if (index_has_changes(&sb)) {
+ err(o, _("Dirty index: cannot merge (dirty: %s)"),
+ sb.buf);
+ return 0;
+ }
output(o, 0, _("Already up to date!"));
*result = head;
return 1;