Skip to content

Commit ce9d823

Browse files
committed
merge: do not add standard message when message is given with -m option
Even if the user explicitly gave her own message to "git merge", the command still added its standard merge message. It resulted in a useless repetition like this: % git merge -m "Merge early part of side branch" `git rev-parse side~2` % git show -s commit 37217141e7519629353738d5e4e677a15096206f Merge: e68e646 a1d2374 Author: しらいし ななこ <[email protected]> Date: Wed Dec 2 14:33:20 2009 +0900 Merge early part of side branch Merge commit 'a1d2374f8f52f4e8a53171601a920b538a6cec23' The gave her own message because she didn't want git to add the standard message (if she wanted to, she wouldn't have given one, or she would have prepared it using git-fmt-merge-msg command). Noticed by Nanako Shiraishi Signed-off-by: Junio C Hamano <[email protected]>
1 parent 76bf488 commit ce9d823

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

builtin-merge.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static int option_parse_message(const struct option *opt,
7070
if (unset)
7171
strbuf_setlen(buf, 0);
7272
else if (arg) {
73-
strbuf_addf(buf, "%s\n\n", arg);
73+
strbuf_addf(buf, "%s%s", buf->len ? "\n\n" : "", arg);
7474
have_message = 1;
7575
} else
7676
return error("switch `m' requires a value");
@@ -927,11 +927,13 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
927927
* codepath so we discard the error in this
928928
* loop.
929929
*/
930-
for (i = 0; i < argc; i++)
931-
merge_name(argv[i], &msg);
932-
fmt_merge_msg(option_log, &msg, &merge_msg);
933-
if (merge_msg.len)
934-
strbuf_setlen(&merge_msg, merge_msg.len-1);
930+
if (!have_message) {
931+
for (i = 0; i < argc; i++)
932+
merge_name(argv[i], &msg);
933+
fmt_merge_msg(option_log, &msg, &merge_msg);
934+
if (merge_msg.len)
935+
strbuf_setlen(&merge_msg, merge_msg.len-1);
936+
}
935937
}
936938

937939
if (head_invalid || !argc)

t/t7604-merge-custom-message.sh

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@ test_expect_success 'setup' '
2222
git tag c2
2323
'
2424

25-
cat >expected <<\EOF
26-
custom message
2725

28-
Merge commit 'c2'
29-
EOF
3026
test_expect_success 'merge c2 with a custom message' '
3127
git reset --hard c1 &&
28+
echo >expected "custom message" &&
3229
git merge -m "custom message" c2 &&
33-
git cat-file commit HEAD | sed -e "1,/^$/d" > actual &&
30+
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
3431
test_cmp expected actual
3532
'
3633

0 commit comments

Comments
 (0)