merge: decide if we auto-generate the message early in collect_parents()

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Apr 25, 2015 at 18:39 UTC 770380156dd06cd03d83957d55484f4a98ad284f
1 file changed +9 -7
builtin/merge.c
+9 -7
@@ -1098,6 +1098,10 @@ static struct commit_list *collect_parents(struct commit *head_commit,
1098 int i;
1099 struct commit_list *remoteheads = NULL;
1100 struct commit_list **remotes = &remoteheads;
1101 + struct strbuf merge_names = STRBUF_INIT, *autogen = NULL;
1102 +
1103 + if (merge_msg && (!have_message || shortlog_len))
1104 + autogen = &merge_names;
1105
1106 if (head_commit)
1107 remotes = &commit_list_insert(head_commit, remotes)->next;
@@ -1111,15 +1115,13 @@ static struct commit_list *collect_parents(struct commit *head_commit,
1115
1116 remoteheads = reduce_parents(head_commit, head_subsumed, remoteheads);
1117
1114 - if (merge_msg &&
1115 - (!have_message || shortlog_len)) {
1116 - struct strbuf merge_names = STRBUF_INIT;
1118 + if (autogen) {
1119 struct commit_list *p;
1118 -
1120 for (p = remoteheads; p; p = p->next)
1120 - merge_name(merge_remote_util(p->item)->name, &merge_names);
1121 - prepare_merge_message(&merge_names, merge_msg);
1122 - strbuf_release(&merge_names);
1121 + merge_name(merge_remote_util(p->item)->name, autogen);
1122 +
1123 + prepare_merge_message(autogen, merge_msg);
1124 + strbuf_release(autogen);
1125 }
1126
1127 return remoteheads;