Re: [PATCH] Documentation: networking: device drivers: Remove stray asterisks
From: Junio C Hamano
Date: Sun Dec 01 2019 - 10:27:42 EST
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes:
> On Sat, Nov 30, 2019 at 10:35 PM Junio C Hamano <gitster@xxxxxxxxx> wrote:
>>
>> OK, so it appears that the tool is working as documented.
>
> Well, yes and no.
>
> I think it's a mistake that --no-keep-cr (which is the default) only
> acts on the outer envelope.
>
> Now, *originally* the outer envelope was all that existed so it makes
> sense in a historical context of "CR removal happens when splitting
> emails in an mbox". And that's the behavior we have.
Hmph, first of all, the one I was referring to as "documented" was
about --ignore-whitespace, and not --no-keep-cr.
And I am not as sure as you seem to be about "--no-keep-cr" either.
What was the reason why "--no-keep-cr" was invented and made
default? Wasn't it because RFC says that each line of plaintext
transfer of an e-mail is terminated with CRLF? It would mean that,
whether the payload originally had CRLF terminated or LF terminated,
we would not be able to tell---the CR may have been there from the
beginning, or it could have been added in transit. And because we
(the projects Git was originally designed to serve well) wanted our
patches with LF terminated lines most of the time, it made sense to
strip CR from CRLF (i.e. assuming that it would be rare that the
sender wants to transmit CRLF terminated lines).
If the contents were base64 protected from getting munged during
transit, we _know_ CRLF in the payload after we decode MIME is what
the sender _meant_ to give us, no? Which leads me to say ...
>
> But then git learnt to do MIME decoding and extracting things from
> base64 etc, and the CR removal wasn't updated to that change.
... I do not think it was a wrong decision (well, I do not think we
made the conscious decision to do so, though) not to do that update.
I dunno.