Josh Triplett <> writes:

> Currently, format-patch puts base-commit and prerequisite-patch-id
> information below the patch, and below the email signature.  Most mail
> clients automatically trim everything below the signature marker as
> unimportant when quoting a mail for a reply, which would make it
> difficult for someone to reply, quote the base-commit, and say something
> like "I don't have this commit, where did it come from?" or "Can you
> please rebase this on ...".
> Might it make sense to move this information adjacent to the diffstat,
> instead?  Or, at least, above the email signature?

I personally feel that it would be annoying to have them near
diffstat, especially given that unbounded many prereq patches can be
listed.  It would not be too bad to flip the order between the call
to print_signature() and print_bases(), though.  The extent of the
change needed to (note: not even compile-tested) does does not look
too bad, either.

I did not carefully think what the right adjustment for the MIME
case is, though.

I would expect some tests that expect the current order of the tail
end of the output to break, which you would need to adjust.  And if
there is no such test right now, you should add one, as your inquiry
and this patch _sets_ a concrete expectation as to what should come
before the signature line, which future updates should not break.

 builtin/log.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/builtin/log.c b/builtin/log.c
index 92dc34d..d69d5e6 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1042,7 +1042,6 @@ static void make_cover_letter(struct rev_info *rev, int 
        fprintf(rev->diffopt.file, "\n");
-       print_signature(rev->diffopt.file);
 static const char *clean_message_id(const char *msg_id)
@@ -1720,6 +1719,7 @@ int cmd_format_patch(int argc, const char **argv, const 
char *prefix)
                make_cover_letter(&rev, use_stdout,
                                  origin, nr, list, branch_name, quiet);
                print_bases(&bases, rev.diffopt.file);
+               print_signature(rev.diffopt.file);
@@ -1779,13 +1779,13 @@ int cmd_format_patch(int argc, const char **argv, const 
char *prefix)
                if (!use_stdout)
                        rev.shown_one = 0;
                if (shown) {
+                       print_bases(&bases, rev.diffopt.file);
                        if (rev.mime_boundary)
                                fprintf(rev.diffopt.file, "\n--%s%s--\n\n\n",
-                       print_bases(&bases, rev.diffopt.file);
                if (!use_stdout)

Reply via email to