diff options
author | Elijah Newren <newren@gmail.com> | 2018-07-01 04:25:00 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-07-11 19:38:36 +0300 |
commit | e1f8694f3394caf3d3cd57c6c7593f0b0cdb1f9e (patch) | |
tree | dd07179f9af2ebd29a518d3553ea061ceb099b77 /merge-recursive.c | |
parent | 92702392cefdbd66ca593fa909540230ef9e005e (diff) |
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.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index 2fb1bdb010..171587bc7a 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; |