aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-12-02 10:00:58 -0800
committerJunio C Hamano <gitster@pobox.com>2009-12-02 10:02:08 -0800
commitce9d823b9141756b5e60aa6c62653adb08e7213b (patch)
tree1fe3b071a27499fc0dfb964d1bd84197424097ca
parent76bf488e61b8a87191a1779b79820545e64ef275 (diff)
downloadgit-ce9d823b9141756b5e60aa6c62653adb08e7213b.tar.gz
git-ce9d823b9141756b5e60aa6c62653adb08e7213b.tar.xz
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: しらいし ななこ <nanako3@lavabit.com> 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 <gitster@pobox.com>
-rw-r--r--builtin-merge.c14
-rwxr-xr-xt/t7604-merge-custom-message.sh7
2 files changed, 10 insertions, 11 deletions
diff --git a/builtin-merge.c b/builtin-merge.c
index e5cf79530..287141914 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -70,7 +70,7 @@ static int option_parse_message(const struct option *opt,
if (unset)
strbuf_setlen(buf, 0);
else if (arg) {
- strbuf_addf(buf, "%s\n\n", arg);
+ strbuf_addf(buf, "%s%s", buf->len ? "\n\n" : "", arg);
have_message = 1;
} else
return error("switch `m' requires a value");
@@ -927,11 +927,13 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
* codepath so we discard the error in this
* loop.
*/
- for (i = 0; i < argc; i++)
- merge_name(argv[i], &msg);
- fmt_merge_msg(option_log, &msg, &merge_msg);
- if (merge_msg.len)
- strbuf_setlen(&merge_msg, merge_msg.len-1);
+ if (!have_message) {
+ for (i = 0; i < argc; i++)
+ merge_name(argv[i], &msg);
+ fmt_merge_msg(option_log, &msg, &merge_msg);
+ if (merge_msg.len)
+ strbuf_setlen(&merge_msg, merge_msg.len-1);
+ }
}
if (head_invalid || !argc)
diff --git a/t/t7604-merge-custom-message.sh b/t/t7604-merge-custom-message.sh
index de977c5e2..269cfdf26 100755
--- a/t/t7604-merge-custom-message.sh
+++ b/t/t7604-merge-custom-message.sh
@@ -22,15 +22,12 @@ test_expect_success 'setup' '
git tag c2
'
-cat >expected <<\EOF
-custom message
-Merge commit 'c2'
-EOF
test_expect_success 'merge c2 with a custom message' '
git reset --hard c1 &&
+ echo >expected "custom message" &&
git merge -m "custom message" c2 &&
- git cat-file commit HEAD | sed -e "1,/^$/d" > actual &&
+ git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
test_cmp expected actual
'