From: Junio C Hamano Date: Sun, 26 Apr 2015 01:39:43 +0000 (-0700) Subject: merge: decide if we auto-generate the message early in collect_parents() X-Git-Tag: v2.5.0-rc0~42^2~10 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=770380156dd06cd03d83957d55484f4a98ad284f;p=git-core%2Fgit.git merge: decide if we auto-generate the message early in collect_parents() Signed-off-by: Junio C Hamano --- diff --git a/builtin/merge.c b/builtin/merge.c index 9f9853876..eb3be6817 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1098,6 +1098,10 @@ static struct commit_list *collect_parents(struct commit *head_commit, int i; struct commit_list *remoteheads = NULL; struct commit_list **remotes = &remoteheads; + struct strbuf merge_names = STRBUF_INIT, *autogen = NULL; + + if (merge_msg && (!have_message || shortlog_len)) + autogen = &merge_names; if (head_commit) remotes = &commit_list_insert(head_commit, remotes)->next; @@ -1111,15 +1115,13 @@ static struct commit_list *collect_parents(struct commit *head_commit, remoteheads = reduce_parents(head_commit, head_subsumed, remoteheads); - if (merge_msg && - (!have_message || shortlog_len)) { - struct strbuf merge_names = STRBUF_INIT; + if (autogen) { struct commit_list *p; - for (p = remoteheads; p; p = p->next) - merge_name(merge_remote_util(p->item)->name, &merge_names); - prepare_merge_message(&merge_names, merge_msg); - strbuf_release(&merge_names); + merge_name(merge_remote_util(p->item)->name, autogen); + + prepare_merge_message(autogen, merge_msg); + strbuf_release(autogen); } return remoteheads;