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>
This commit is contained in:
committed by
Junio C Hamano
parent
92702392ce
commit
e1f8694f33
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user