From 212620fe7e74f6bd4a30a5a39d7c7b3f685ef888 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 17 Oct 2012 20:48:25 -0700 Subject: format-patch: append --signature after notes When appending a new signature with "format-patch --signature", if the "--notes" option is also in effect, the location of the new signature (and if the signature should be added in the first place) should be decided using the contents of the original commit log message, before the message from the notes is added. Signed-off-by: Junio C Hamano --- t/t4014-format-patch.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 't/t4014-format-patch.sh') diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 959aa26ef5..bea63814e6 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -616,8 +616,16 @@ test_expect_success 'format-patch --in-reply-to' ' ' test_expect_success 'format-patch --signoff' ' - git format-patch -1 --signoff --stdout | - grep "^Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" + git format-patch -1 --signoff --stdout >out && + grep "^Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" out +' + +test_expect_success 'format-patch --notes --signoff' ' + git notes --ref test add -m "test message" HEAD && + git format-patch -1 --signoff --stdout --notes=test >out && + # Notes message must come after S-o-b + ! sed "/^Signed-off-by: /q" out | grep "test message" && + sed "1,/^Signed-off-by: /d" out | grep "test message" ' echo "fatal: --name-only does not make sense" > expect.name-only -- cgit v1.3-5-g45d5 From bd1470b8cb0cfb42c7de3b9084cdd8ae53aa1d4c Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 17 Oct 2012 21:27:22 -0700 Subject: format-patch --notes: show notes after three-dashes When inserting the note after the commit log message to format-patch output, add three dashes before the note. Record the fact that we did so in the rev_info and omit showing duplicated three dashes in the usual codepath that is used when notes are not being shown. Signed-off-by: Junio C Hamano --- log-tree.c | 15 +++++++++++---- revision.h | 1 + t/t4014-format-patch.sh | 7 +++++-- 3 files changed, 17 insertions(+), 6 deletions(-) (limited to 't/t4014-format-patch.sh') diff --git a/log-tree.c b/log-tree.c index 4390b117e3..712a22b19b 100644 --- a/log-tree.c +++ b/log-tree.c @@ -677,8 +677,13 @@ void show_log(struct rev_info *opt) append_signoff(&msgbuf, opt->add_signoff); if ((ctx.fmt != CMIT_FMT_USERFORMAT) && - ctx.notes_message && *ctx.notes_message) + ctx.notes_message && *ctx.notes_message) { + if (ctx.fmt == CMIT_FMT_EMAIL) { + strbuf_addstr(&msgbuf, "---\n"); + opt->shown_dashes = 1; + } strbuf_addstr(&msgbuf, ctx.notes_message); + } if (opt->show_log_size) { printf("log size %i\n", (int)msgbuf.len); @@ -710,6 +715,7 @@ void show_log(struct rev_info *opt) int log_tree_diff_flush(struct rev_info *opt) { + opt->shown_dashes = 0; diffcore_std(&opt->diffopt); if (diff_queue_is_empty()) { @@ -737,10 +743,11 @@ int log_tree_diff_flush(struct rev_info *opt) opt->diffopt.output_prefix_data); fwrite(msg->buf, msg->len, 1, stdout); } - if ((pch & opt->diffopt.output_format) == pch) { - printf("---"); + if (!opt->shown_dashes) { + if ((pch & opt->diffopt.output_format) == pch) + printf("---"); + putchar('\n'); } - putchar('\n'); } } diff_flush(&opt->diffopt); diff --git a/revision.h b/revision.h index a95bd0b3f3..059bfff812 100644 --- a/revision.h +++ b/revision.h @@ -111,6 +111,7 @@ struct rev_info { /* Format info */ unsigned int shown_one:1, + shown_dashes:1, show_merge:1, show_notes:1, show_notes_given:1, diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index bea63814e6..9750ba6996 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -623,9 +623,12 @@ test_expect_success 'format-patch --signoff' ' test_expect_success 'format-patch --notes --signoff' ' git notes --ref test add -m "test message" HEAD && git format-patch -1 --signoff --stdout --notes=test >out && - # Notes message must come after S-o-b + # Three dashes must come after S-o-b ! sed "/^Signed-off-by: /q" out | grep "test message" && - sed "1,/^Signed-off-by: /d" out | grep "test message" + sed "1,/^Signed-off-by: /d" out | grep "test message" && + # Notes message must come after three dashes + ! sed "/^---$/q" out | grep "test message" && + sed "1,/^---$/d" out | grep "test message" ' echo "fatal: --name-only does not make sense" > expect.name-only -- cgit v1.3-5-g45d5