From: "Martin Krüger" <martin.krueger@gmx.com>
To: git@vger.kernel.org
Subject: Problem in Patches with commit-messages containing non-ascii
Date: Fri, 03 Dec 2010 12:19:31 +0100 [thread overview]
Message-ID: <4CF8D243.50108@gmx.com> (raw)
Hello
I stumbled over a problem with git handling patches.
Perhaps i am then only developer who hast this problem because im am the
only developer writing commit-mesages in german.
Consider this log-Message:
commit ea2cd63dfe9b3ac3581b6cff8b13a52e69066242
Author: martin <martin@chad.upnx.de>
Date: Fri Nov 19 18:58:58 2010 +0100
Methoden überall angepasst.
Ausser Aussnahmen
Using format-patch the result is:
From ea2cd63dfe9b3ac3581b6cff8b13a52e69066242 Mon Sep 17 00:00:00 2001
From: martin <martin@chad.upnx.de>
Date: Fri, 19 Nov 2010 18:58:58 +0100
Subject: [PATCH] =?UTF-8?q?Methoden=20=C3=BCberall=20angepasst.
=20Ausser=20Aussnahmen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The content of the subject field ist split up in two lines .
The blank in the second line indicates an header-folding according to
RFC2822 .
After this the string is encoded according to RFC2047 because it
contains non-ascii chars. The blank indicatinc the folding ist encoded
too, with =20.
That is a Problem because the unfolding according to RFC2822 cant't
detect the folding anymore. RFC2822 suggests that the unfolding must be
done before any further processing of the header which applies to the
RFC2047 decoding.
Applying this patch leads to this commit-Message:
commit 3949e57e4773e85e6c55482b68ade7c409426b3c
Author: martin <martin@chad.upnx.de>
Date: Fri Nov 19 18:58:58 2010 +0100
=?UTF-8?q?Methoden=20=C3=BCberall=20angepasst.
=20Ausser=20Aussnahmen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The solution is to make an exception not to encode blanks indicating a
folding.
I wrote this patch:
diff --git a/pretty.c b/pretty.c
index f85444b..8a78a4e 100644
--- a/pretty.c
+++ b/pretty.c
@@ -216,7 +216,7 @@ static int is_rfc2047_special(char ch)
static void add_rfc2047(struct strbuf *sb, const char *line, int len,
const char *encoding)
{
- int i, last;
+ int i, last, num_foldings;
for (i = 0; i < len; i++) {
int ch = line[i];
@@ -229,8 +229,14 @@ static void add_rfc2047(struct strbuf *sb, const
char *line, int len,
return;
needquote:
- strbuf_grow(sb, len * 3 + strlen(encoding) + 100);
+ num_foldings=0;
+ for (i = 1; i < len; i++)
+ if(line[i]==' '&&line[i]=='\n')
+ num_foldings++;
+
+ strbuf_grow(sb, len * 3 + num_foldings*(7+strlen(encoding)) + 100);
strbuf_addf(sb, "=?%s?q?", encoding);
+ unsigned last_ch=0;
for (i = last = 0; i < len; i++) {
unsigned ch = line[i] & 0xFF;
/*
@@ -240,10 +246,19 @@ needquote:
* leave the underscore in place.
*/
if (is_rfc2047_special(ch) || ch == ' ') {
- strbuf_add(sb, line + last, i - last);
- strbuf_addf(sb, "=%02X", ch);
- last = i + 1;
+ if(!(ch == ' '&& last_ch=='\n')){
+ strbuf_add(sb, line + last, i - last);
+ strbuf_addf(sb, "=%02X", ch);
+ }
+ else{
+ if(i>last+1)
+ strbuf_add(sb, line + last, i - last-1);
+ strbuf_addstr(sb, "?=\n ");
+ strbuf_addf(sb, "=?%s?q?", encoding);
+ }
+ last = i + 1;
}
+ last_ch=ch;
}
strbuf_add(sb, line + last, len - last);
strbuf_addstr(sb, "?=");
Then git generates this patch:
From ea2cd63dfe9b3ac3581b6cff8b13a52e69066242 Mon Sep 17 00:00:00 2001
From: martin <martin@chad.upnx.de>
Date: Fri, 19 Nov 2010 18:58:58 +0100
Subject: [PATCH] =?UTF-8?q?Methoden=20=C3=BCberall=20angepasst.?=
=?UTF-8?q?Ausser=20Aussnahmen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Applyin leads to a correct commit-Messsage:
commit 62d06e3415ec0726dbd58c11ed93771502b77805
Author: martin <martin@chad.upnx.de>
Date: Fri Nov 19 18:58:58 2010 +0100
Methoden überall angepasst.Ausser Aussnahmen
Best regards
martin
next reply other threads:[~2010-12-03 11:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-03 11:19 Martin Krüger [this message]
2010-12-03 12:59 ` Problem in Patches with commit-messages containing non-ascii Jan Krüger
2010-12-03 13:08 ` Michael J Gruber
2010-12-03 19:03 ` Andreas Schwab
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=4CF8D243.50108@gmx.com \
--to=martin.krueger@gmx.com \
--cc=git@vger.kernel.org \
/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).