threads / discuss / 26573

How do I make git-format-patch reject 8-bit encodings?

Subject: How do I make git-format-patch reject 8-bit encodings?

## tl;dr

5 messages between Feb 21, 2011 and Feb 22, 2011.

replies: 4people: 4as markdown or json

Timur Tabi· Feb 21, 2011, 22:11 UTC · lore

Is there any way to get git-format-patch to refuse to create a patch that has 8-bit characters in it? That is, if a given commit somehow has an 8-bit character (e.g. utf-encoded), then I want git-format-patch to refuse to create a patch for that commit.

Also, how can I do the same thing with git-send-email? That is, if the patch requires an 8-bit encoding, how do I get it to refuse to send the patch?

-- 
Timur Tabi
Linux kernel developer at Freescale
Junio C Hamano· Feb 22, 2011, 00:19 UTC · re: Timur Tabi · lore

Re: How do I make git-format-patch reject 8-bit encodings?

Timur Tabi <timur@freescale.com> writes:
Show 7 quoted lines
> Is there any way to get git-format-patch to refuse to create a patch that has
> 8-bit characters in it?  That is, if a given commit somehow has an 8-bit
> character (e.g. utf-encoded), then I want git-format-patch to refuse to create a
> patch for that commit.
>
> Also, how can I do the same thing with git-send-email?  That is, if the patch
> requires an 8-bit encoding, how do I get it to refuse to send the patch?

Feels like an X-Y problem, but wouldn't it be an option to let format-patch write into individual files, check these files and reject ones that are not 8-bit clean, and then send the result out via send-email? You should be proofreading the format-patch output to catch and fix typos before hading them to send-email anyway, so the above would be the natural thing to do.

Tabi Timur-B04825· Feb 22, 2011, 00:27 UTC · re: Junio C Hamano · lore

Re: How do I make git-format-patch reject 8-bit encodings?

Junio C Hamano wrote:
Show 6 quoted lines
> Feels like an X-Y problem, but wouldn't it be an option to let
> format-patch write into individual files, check these files and reject
> ones that are not 8-bit clean, and then send the result out via
> send-email?  You should be proofreading the format-patch output to catch
> and fix typos before hading them to send-email anyway, so the above would
> be the natural thing to do.
The problem is that it appears that git-send-email is taking normal-looking patches and encoding them as base64, and I don't know about it until after the email is sent.  It also appears to be inconsistent.  I've seen some utf-8 patches emailed as normal text, and other patches emailed as base64.
I don't have any real problem with utf-8, but I want to prevent git-send-email from doing base64 encodings on its own.
-- 
Timur Tabi
Linux kernel developer
Jeff King· Feb 22, 2011, 07:33 UTC · re: Tabi Timur-B04825 · lore

Re: How do I make git-format-patch reject 8-bit encodings?

On Tue, Feb 22, 2011 at 12:27:19AM +0000, Tabi Timur-B04825 wrote:
Show 11 quoted lines
> Junio C Hamano wrote:
> > Feels like an X-Y problem, but wouldn't it be an option to let
> > format-patch write into individual files, check these files and reject
> > ones that are not 8-bit clean, and then send the result out via
> > send-email?  You should be proofreading the format-patch output to catch
> > and fix typos before hading them to send-email anyway, so the above would
> > be the natural thing to do.
> 
> The problem is that it appears that git-send-email is taking
> normal-looking patches and encoding them as base64, and I don't know
> about it until after the email is sent.

Can you provide an example of a message that is base64-encoded? I didn't think we base64-encoded anything in send-email (we do rfc2047-encode 8-bit header lines, but using quoted-printable). And looking through it, I don't see any code to do so.

It's possible that I'm missing the code. Or that one of the underlying modules is doing it for us. Or it's possible that one of the SMTP servers in your route is doing it.

If you can send an example of original format-patch output that you fed to git-send-email, and the resulting mail that was delivered, then we can know more.

I have a suspicion it is the last one (some MTA doing it), because git tends to generate messages with an 8bit transfer encoding. If we hit a server that doesn't advertise support for 8BIT SMTP extensions, I believe the sending MTA is required to encode (or bounce). That would also account for the inconsistency you noted. It depends on the recipient and the exact route of SMTP servers in the delivery.

-Peff
Timur Tabi· Feb 22, 2011, 14:49 UTC · re: Jeff King · lore

Re: How do I make git-format-patch reject 8-bit encodings?

Jeff King wrote:
> Can you provide an example of a message that is base64-encoded? I didn't
> think we base64-encoded anything in send-email (we do rfc2047-encode
> 8-bit header lines, but using quoted-printable). And looking through it,
> I don't see any code to do so.

I can forward to you the original email that is base64-encoded, but I cannot reproduce the problem. Even when I take that patch, apply it with git-am and recreate it with git-format-patch, when I sent that recreate patch with git-send-email, it is not base64 encoded.

> It's possible that I'm missing the code. Or that one of the underlying
> modules is doing it for us. Or it's possible that one of the SMTP
> servers in your route is doing it.

It is possible that our mail server is doing it. We recently migrated to the "Microsoft cloud" email service, and we've experienced all sorts of odd problems with mailing patches.

> If you can send an example of original format-patch output that you fed
> to git-send-email, and the resulting mail that was delivered, then we
> can know more.
I don't know if I can still get the original patch that was encoded.
Show 6 quoted lines
> I have a suspicion it is the last one (some MTA doing it), because git
> tends to generate messages with an 8bit transfer encoding. If we hit a
> server that doesn't advertise support for 8BIT SMTP extensions, I
> believe the sending MTA is required to encode (or bounce). That would
> also account for the inconsistency you noted. It depends on the
> recipient and the exact route of SMTP servers in the delivery.
Ah, this might be a clue.  I will do more research and get back to you.
-- 
Timur Tabi
Linux kernel developer at Freescale

← back to recent threads