format-patch: append --signature after notes
authorJunio C Hamano <gitster@pobox.com>
Thu, 18 Oct 2012 03:48:25 +0000 (20:48 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Oct 2012 05:42:40 +0000 (22:42 -0700)
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 <gitster@pobox.com>
log-tree.c
t/t4014-format-patch.sh

index e7e08f42ebc5b19c1c6e315d96a121940544caa6..4390b117e3270f2bc416b5e133466edb72d0376c 100644 (file)
@@ -672,12 +672,14 @@ void show_log(struct rev_info *opt)
        ctx.reflog_info = opt->reflog_info;
        ctx.fmt = opt->commit_format;
        pretty_print_commit(&ctx, commit, &msgbuf);
+
+       if (opt->add_signoff)
+               append_signoff(&msgbuf, opt->add_signoff);
+
        if ((ctx.fmt != CMIT_FMT_USERFORMAT) &&
            ctx.notes_message && *ctx.notes_message)
                strbuf_addstr(&msgbuf, ctx.notes_message);
 
-       if (opt->add_signoff)
-               append_signoff(&msgbuf, opt->add_signoff);
        if (opt->show_log_size) {
                printf("log size %i\n", (int)msgbuf.len);
                graph_show_oneline(opt->graph);
index 959aa26ef5d96f4be79e6051fb6ae159e03b556e..bea63814e6a58e930aa46e6728cc3442fc4ea4f4 100755 (executable)
@@ -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