diff options
author | Eric Wong <e@80x24.org> | 2016-07-22 22:47:39 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-07-23 21:38:40 +0000 |
commit | 4f769f1799db11f135948bf517f2d8d864fa778f (patch) | |
tree | c5b3d971f9897f7d41c5f17e9d9b7d7d325f17d0 | |
parent | 165c0793497261ee7327ee9eada91e7a25baa0cc (diff) | |
download | git-svn-mboxo.tar.gz |
Users have mistakenly copied "From " lines into commit messages in the past, and will certainly make the same mistakes in the future. Since not everyone uses mboxrd, yet, we should at least prevent miss-split mails by always escaping "From " lines based on the check used by mailsplit. mailsplit will not perform unescaping by default, yet, as it could cause further invocations of format-patch from old versions of git to generate bad output. Propagating the mboxo escaping is preferable to miss-split patches. Unescaping may still be performed via "--mboxrd". ref: https://public-inbox.org/git/20160606230248.GA15906@dcvr.yhbt.net/T/#u Signed-off-by: Eric Wong <e@80x24.org>
-rw-r--r-- | pretty.c | 16 | ||||
-rwxr-xr-x | t/t4014-format-patch.sh | 14 |
2 files changed, 27 insertions, 3 deletions
@@ -10,6 +10,7 @@ #include "color.h" #include "reflog-walk.h" #include "gpg-interface.h" +#include "mailinfo.h" static char *user_format; static struct cmt_fmt_map { @@ -1745,9 +1746,18 @@ void pp_remainder(struct pretty_print_context *pp, strbuf_add_tabexpand(sb, pp->expand_tabs_in_log, line, linelen); else { - if (pp->fmt == CMIT_FMT_MBOXRD && - is_mboxrd_from(line, linelen)) - strbuf_addch(sb, '>'); + switch (pp->fmt) { + case CMIT_FMT_EMAIL: + if (is_from_line(line, linelen)) + strbuf_addch(sb, '>'); + break; + case CMIT_FMT_MBOXRD: + if (is_mboxrd_from(line, linelen)) + strbuf_addch(sb, '>'); + break; + default: + break; + } strbuf_add(sb, line, linelen); } diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 1206c48392..8fa3982686 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -1606,4 +1606,18 @@ test_expect_success 'format-patch --pretty=mboxrd' ' test_cmp expect actual ' +test_expect_success 'format-patch From escaping' ' + cat >msg <<-INPUT_END && + somebody pasted format-patch output into a body + + From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 + INPUT_END + + C=$(git commit-tree HEAD^^{tree} -p HEAD <msg) && + git format-patch --stdout -1 $C~1..$C >patch && + git grep -h --no-index \ + ">From 0000000000000000000000000000000000000000 " \ + patch +' + test_done |