Skip to content

Commit f0ecac2

Browse files
rctaygitster
authored andcommitted
merge: --log appends shortlog to message if specified
When the user specifies a message, use fmt_merge_msg_shortlog() to append the shortlog. Previously, when a message was specified, we ignored the merge title ("Merge <foo> into <bar>") and shortlog from fmt_merge_msg(). Update the documentation for -m to reflect this too. Signed-off-by: Tay Ray Chuan <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 8c6bdfd commit f0ecac2

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

Documentation/git-merge.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@ include::merge-options.txt[]
5858

5959
-m <msg>::
6060
Set the commit message to be used for the merge commit (in
61-
case one is created). The 'git fmt-merge-msg' command can be
61+
case one is created).
62+
63+
If `--log` is specified, a shortlog of the commits being merged
64+
will be appended to the specified message.
65+
66+
The 'git fmt-merge-msg' command can be
6267
used to give a good default for automated 'git merge'
6368
invocations.
6469

builtin/fmt-merge-msg.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,9 @@ static int do_fmt_merge_msg(int merge_title, int merge_summary,
298298
rev.ignore_merges = 1;
299299
rev.limited = 1;
300300

301+
if (suffixcmp(out->buf, "\n"))
302+
strbuf_addch(out, '\n');
303+
301304
for (i = 0; i < origins.nr; i++)
302305
shortlog(origins.items[i].string, origins.items[i].util,
303306
head, &rev, limit, out);

builtin/merge.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -981,18 +981,22 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
981981
/*
982982
* All the rest are the commits being merged;
983983
* prepare the standard merge summary message to
984-
* used as the merge message. If remote
984+
* be appended to the given message. If remote
985985
* is invalid we will die later in the common
986986
* codepath so we discard the error in this
987987
* loop.
988988
*/
989-
if (!have_message) {
990-
for (i = 0; i < argc; i++)
991-
merge_name(argv[i], &merge_names);
989+
for (i = 0; i < argc; i++)
990+
merge_name(argv[i], &merge_names);
991+
992+
if (have_message && option_log)
993+
fmt_merge_msg_shortlog(&merge_names, &merge_msg);
994+
else if (!have_message)
992995
fmt_merge_msg(option_log, &merge_names, &merge_msg);
993-
if (merge_msg.len)
994-
strbuf_setlen(&merge_msg, merge_msg.len-1);
995-
}
996+
997+
998+
if (!(have_message && !option_log) && merge_msg.len)
999+
strbuf_setlen(&merge_msg, merge_msg.len-1);
9961000
}
9971001

9981002
if (head_invalid || !argc)

t/t7604-merge-custom-message.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ test_expect_success 'merge c2 with a custom message' '
4040
test_cmp exp.subject actual
4141
'
4242

43-
test_expect_failure 'merge --log appends to custom message' '
43+
test_expect_success 'merge --log appends to custom message' '
4444
git reset --hard c1 &&
4545
git merge --log -m "$(cat exp.subject)" c2 &&
4646
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&

0 commit comments

Comments
 (0)