summaryrefslogtreecommitdiffstats
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2018-06-30 18:25:00 -0700
committerJunio C Hamano <gitster@pobox.com>2018-07-11 09:38:36 -0700
commite1f8694f3394caf3d3cd57c6c7593f0b0cdb1f9e (patch)
treedd07179f9af2ebd29a518d3553ea061ceb099b77 /merge-recursive.c
parent92702392cefdbd66ca593fa909540230ef9e005e (diff)
downloadgit-e1f8694f3394caf3d3cd57c6c7593f0b0cdb1f9e.tar.gz
git-e1f8694f3394caf3d3cd57c6c7593f0b0cdb1f9e.tar.xz
merge-recursive: fix assumption that head tree being merged is HEAD
`git merge-recursive` does a three-way merge between user-specified trees base, head, and remote. Since the user is allowed to specify head, we can not necesarily assume that head == HEAD. Modify index_has_changes() to take an extra argument specifying the tree to compare against. If NULL, it will compare to HEAD. We then use this from merge-recursive to make sure we compare to the user-specified head. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 2fb1bdb01..171587bc7 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1983,7 +1983,7 @@ int merge_trees(struct merge_options *o,
if (oid_eq(&common->object.oid, &merge->object.oid)) {
struct strbuf sb = STRBUF_INIT;
- if (!o->call_depth && index_has_changes(&the_index, &sb)) {
+ if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
sb.buf);
return -1;