Allow merging bare trees in merge-recursive.
To support wider use cases, such as from within `git am -3`, the merge-recursive utility needs to accept not just commit-ish but also tree-ish as arguments on its command line. If given a tree-ish then merge-recursive will create a virtual commit wrapping it, with the subject of the commit set to the best name we can derive for that tree, which is either the command line string (probably the SHA1), or whatever string appears in GITHEAD_*. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
7ba3c078c7
commit
a970e84e8a
@ -1268,6 +1268,9 @@ static struct commit *get_ref(const char *ref)
|
|||||||
if (get_sha1(ref, sha1))
|
if (get_sha1(ref, sha1))
|
||||||
die("Could not resolve ref '%s'", ref);
|
die("Could not resolve ref '%s'", ref);
|
||||||
object = deref_tag(parse_object(sha1), ref, strlen(ref));
|
object = deref_tag(parse_object(sha1), ref, strlen(ref));
|
||||||
|
if (object->type == OBJ_TREE)
|
||||||
|
return make_virtual_commit((struct tree*)object,
|
||||||
|
better_branch_name(ref));
|
||||||
if (object->type != OBJ_COMMIT)
|
if (object->type != OBJ_COMMIT)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (parse_commit((struct commit *)object))
|
if (parse_commit((struct commit *)object))
|
||||||
|
Loading…
Reference in New Issue
Block a user