summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-05-04 15:51:27 -0700
committerJunio C Hamano <gitster@pobox.com>2011-05-04 15:51:27 -0700
commit5ead6a6fdb5f613cbe252e264e18db709994cfe4 (patch)
tree94b2065122b495cb5aef5dc177b3eefb164ed289
parent59b2389c324dbbb335bd3375d950433b600eee90 (diff)
parent990f6e30eb00adeb8cad75c3be34c0fc9ff6abb0 (diff)
downloadgit-5ead6a6fdb5f613cbe252e264e18db709994cfe4.tar.gz
Merge branch 'jk/format-patch-multiline-header'
* jk/format-patch-multiline-header: format-patch: wrap email addresses after long names
-rw-r--r--pretty.c9
-rwxr-xr-xt/t4014-format-patch.sh15
2 files changed, 24 insertions, 0 deletions
diff --git a/pretty.c b/pretty.c
index e1d8a8f414..ba95de92cd 100644
--- a/pretty.c
+++ b/pretty.c
@@ -287,6 +287,7 @@ void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb,
if (fmt == CMIT_FMT_EMAIL) {
char *name_tail = strchr(line, '<');
int display_name_length;
+ int final_line;
if (!name_tail)
return;
while (line < name_tail && isspace(name_tail[-1]))
@@ -294,6 +295,14 @@ void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb,
display_name_length = name_tail - line;
strbuf_addstr(sb, "From: ");
add_rfc2047(sb, line, display_name_length, encoding);
+ for (final_line = 0; final_line < sb->len; final_line++)
+ if (sb->buf[sb->len - final_line - 1] == '\n')
+ break;
+ if (namelen - display_name_length + final_line > 78) {
+ strbuf_addch(sb, '\n');
+ if (!isspace(name_tail[0]))
+ strbuf_addch(sb, ' ');
+ }
strbuf_add(sb, name_tail, namelen - display_name_length);
strbuf_addch(sb, '\n');
} else {
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 37a4109c97..a7060b75be 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -793,4 +793,19 @@ test_expect_success 'format-patch wraps extremely long headers (rfc2047)' '
test_cmp expect subject
'
+M8="foo_bar_"
+M64=$M8$M8$M8$M8$M8$M8$M8$M8
+cat >expect <<EOF
+From: $M64
+ <foobar@foo.bar>
+EOF
+test_expect_success 'format-patch wraps non-quotable headers' '
+ rm -rf patches/ &&
+ echo content >>file &&
+ git add file &&
+ git commit -mfoo --author "$M64 <foobar@foo.bar>" &&
+ git format-patch --stdout -1 >patch &&
+ sed -n "/^From: /p; /^ /p; /^$/q" <patch >from &&
+ test_cmp expect from
+'
test_done