From: Jeff King <peff@peff.net>
To: "Stefan-W. Hahn" <stefan.hahn@s-hahn.de>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: [PATCH 5/5] format-patch: preserve subject newlines with -k
Date: Thu, 26 May 2011 18:28:17 -0400 [thread overview]
Message-ID: <20110526222817.GC21775@sigill.intra.peff.net> (raw)
In-Reply-To: <20110526222450.GA20077@sigill.intra.peff.net>
In older versions of git, we used rfc822 header folding to
indicate that the original subject line had multiple lines
in it. But since a1f6baa (format-patch: wrap long header
lines, 2011-02-23), we now use header folding whenever there
is a long line.
This means that "git am" cannot trust header folding as a
sign from format-patch that newlines should be preserved.
Instead, format-patch needs to signal more explicitly that
the newlines are significant. This patch does so by
rfc2047-encoding the newlines in the subject line. No
changes are needed on the "git am" end; it already decodes
the newlines properly.
Signed-off-by: Jeff King <peff@peff.net>
---
builtin/log.c | 1 +
commit.h | 1 +
log-tree.c | 1 +
pretty.c | 3 ++-
revision.h | 3 ++-
t/t4152-am-subjects.sh | 2 +-
6 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/builtin/log.c b/builtin/log.c
index 8d842cb..0e46e5a 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1131,6 +1131,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
die ("-n and -k are mutually exclusive.");
if (keep_subject && subject_prefix)
die ("--subject-prefix and -k are mutually exclusive.");
+ rev.preserve_subject = keep_subject;
argc = setup_revisions(argc, argv, &rev, &s_r_opt);
if (argc > 1)
diff --git a/commit.h b/commit.h
index 2935740..e985dcc 100644
--- a/commit.h
+++ b/commit.h
@@ -74,6 +74,7 @@ struct pretty_print_context
int abbrev;
const char *subject;
const char *after_subject;
+ int preserve_subject;
enum date_mode date_mode;
int need_8bit_cte;
int show_notes;
diff --git a/log-tree.c b/log-tree.c
index 0d8cc7a..0c41789 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -504,6 +504,7 @@ void show_log(struct rev_info *opt)
ctx.date_mode = opt->date_mode;
ctx.abbrev = opt->diffopt.abbrev;
ctx.after_subject = extra_headers;
+ ctx.preserve_subject = opt->preserve_subject;
ctx.reflog_info = opt->reflog_info;
ctx.fmt = opt->commit_format;
pretty_print_commit(&ctx, commit, &msgbuf);
diff --git a/pretty.c b/pretty.c
index f920205..905a082 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1122,7 +1122,8 @@ void pp_title_line(const struct pretty_print_context *pp,
struct strbuf title;
strbuf_init(&title, 80);
- *msg_p = format_subject(&title, *msg_p, " ");
+ *msg_p = format_subject(&title, *msg_p,
+ pp->preserve_subject ? "\n" : " ");
strbuf_grow(sb, title.len + 1024);
if (pp->subject) {
diff --git a/revision.h b/revision.h
index 05659c6..f8ddd83 100644
--- a/revision.h
+++ b/revision.h
@@ -90,7 +90,8 @@ struct rev_info {
abbrev_commit:1,
use_terminator:1,
missing_newline:1,
- date_mode_explicit:1;
+ date_mode_explicit:1,
+ preserve_subject:1;
unsigned int disable_stdin:1;
enum date_mode date_mode;
diff --git a/t/t4152-am-subjects.sh b/t/t4152-am-subjects.sh
index 37e5c03..4c68245 100755
--- a/t/t4152-am-subjects.sh
+++ b/t/t4152-am-subjects.sh
@@ -70,7 +70,7 @@ test_expect_success 'multiline subject unwrapped (format-patch -k | am)' '
check_subject multiline-k
'
echo "$MULTILINE_SUBJECT" >expect
-test_expect_failure 'multiline subject preserved (format-patch -k | am -k)' '
+test_expect_success 'multiline subject preserved (format-patch -k | am -k)' '
check_subject multiline-k -k
'
--
1.7.4.5.26.g0c6a2
prev parent reply other threads:[~2011-05-26 22:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-24 16:02 commit a1f6baa5 (wrap long header lines) breaks my habit Stefan-W. Hahn
2011-05-24 16:27 ` Junio C Hamano
2011-05-24 16:46 ` Stefan-W. Hahn
2011-05-24 20:07 ` Jeff King
2011-05-25 15:40 ` Stefan-W. Hahn
2011-05-26 20:36 ` Jeff King
2011-05-26 20:41 ` [PATCH 1/3] t: test subject handling in format-patch / am pipeline Jeff King
2011-05-26 20:53 ` [PATCH 2/3] mailinfo: always clean up rfc822 header folding Jeff King
2011-05-26 20:55 ` [PATCH 3/3] format-patch: preserve subject newlines with -k Jeff King
2011-05-26 21:18 ` Junio C Hamano
2011-05-26 21:19 ` Jeff King
2011-05-26 22:24 ` Jeff King
2011-05-26 22:27 ` [PATCH 3/5] pretty: add pp_commit_easy function for simple callers Jeff King
2011-05-26 22:47 ` Junio C Hamano
2011-05-26 22:27 ` [PATCH 4/5] clean up calling conventions for pretty.c functions Jeff King
2011-05-26 22:28 ` Jeff King [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110526222817.GC21775@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=stefan.hahn@s-hahn.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).