Re: [PATCH 1/3] merge: a random object may not necssarily be a commit
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:56:36
Jeff King [off-list ref] writes:
On Mon, Apr 01, 2013 at 12:57:17PM -0700, Junio C Hamano wrote:quoted
The user could have said "git merge $(git rev-parse v1.0.0)"; we shouldn't mark it as "Merge commit '15999998fb...'" as the merge name, even though such an invocation might be crazy. We could even read the "tag " header from the tag object and replace the object name the user gave us, but let's not lose the information by doing so, at least not yet. Signed-off-by: Junio C Hamano <redacted> --- builtin/merge.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)diff --git a/builtin/merge.c b/builtin/merge.c index 0ec8f0d..990e90c 100644 --- a/builtin/merge.c +++ b/builtin/merge.c@@ -516,6 +516,19 @@ static void merge_name(const char *remote, struct strbuf *msg) strbuf_release(&line); goto cleanup; } + + if (remote_head->util) { + struct merge_remote_desc *desc; + desc = merge_remote_util(remote_head); + if (desc && desc->obj && desc->obj->type == OBJ_TAG) { + strbuf_addf(msg, "%s\t\t%s '%s'\n", + sha1_to_hex(desc->obj->sha1), + typename(desc->obj->type), + remote); + goto cleanup; + } + } + strbuf_addf(msg, "%s\t\tcommit '%s'\n", sha1_to_hex(remote_head->object.sha1), remote);I guess there is no other object type besides OBJ_TAG and OBJ_COMMIT that would yield something we could merge, but it feels weird that you check only for OBJ_TAG here, and otherwise still say "commit". Would the intent be more clear if it just said: if (desc && desc->obj && desc->obj->type != OBJ_COMMIT) { ... ?
I suspect not. The point of the added code is that it knows we want to special case merging a tag object, and it wants to keep any other case behaving the same as before.