Skip to content

Commit 1cf32f4

Browse files
committed
merge: make collect_parents() auto-generate the merge message
Signed-off-by: Junio C Hamano <[email protected]>
1 parent 52fecab commit 1cf32f4

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

builtin/merge.c

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,7 +1092,8 @@ static void prepare_merge_message(struct strbuf *merge_names, struct strbuf *mer
10921092

10931093
static struct commit_list *collect_parents(struct commit *head_commit,
10941094
int *head_subsumed,
1095-
int argc, const char **argv)
1095+
int argc, const char **argv,
1096+
struct strbuf *merge_msg)
10961097
{
10971098
int i;
10981099
struct commit_list *remoteheads = NULL;
@@ -1108,7 +1109,20 @@ static struct commit_list *collect_parents(struct commit *head_commit,
11081109
remotes = &commit_list_insert(commit, remotes)->next;
11091110
}
11101111

1111-
return reduce_parents(head_commit, head_subsumed, remoteheads);
1112+
remoteheads = reduce_parents(head_commit, head_subsumed, remoteheads);
1113+
1114+
if (merge_msg &&
1115+
(!have_message || shortlog_len)) {
1116+
struct strbuf merge_names = STRBUF_INIT;
1117+
struct commit_list *p;
1118+
1119+
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);
1123+
}
1124+
1125+
return remoteheads;
11121126
}
11131127

11141128
int cmd_merge(int argc, const char **argv, const char *prefix)
@@ -1222,7 +1236,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
12221236
if (fast_forward == FF_NO)
12231237
die(_("Non-fast-forward commit does not make sense into "
12241238
"an empty head"));
1225-
remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv);
1239+
remoteheads = collect_parents(head_commit, &head_subsumed,
1240+
argc, argv, NULL);
12261241
remote_head = remoteheads->item;
12271242
if (!remote_head)
12281243
die(_("%s - not something we can merge"), argv[0]);
@@ -1248,7 +1263,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
12481263
head_arg = argv[1];
12491264
argv += 2;
12501265
argc -= 2;
1251-
remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv);
1266+
remoteheads = collect_parents(head_commit, &head_subsumed,
1267+
argc, argv, NULL);
12521268
} else {
12531269
/* We are invoked directly as the first-class UI. */
12541270
head_arg = "HEAD";
@@ -1258,16 +1274,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
12581274
* the standard merge summary message to be appended
12591275
* to the given message.
12601276
*/
1261-
remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv);
1262-
1263-
if (!have_message || shortlog_len) {
1264-
struct strbuf merge_names = STRBUF_INIT;
1265-
1266-
for (p = remoteheads; p; p = p->next)
1267-
merge_name(merge_remote_util(p->item)->name, &merge_names);
1268-
prepare_merge_message(&merge_names, &merge_msg);
1269-
strbuf_release(&merge_names);
1270-
}
1277+
remoteheads = collect_parents(head_commit, &head_subsumed,
1278+
argc, argv, &merge_msg);
12711279
}
12721280

12731281
if (!head_commit || !argc)

0 commit comments

Comments
 (0)