Subject: Re: [PATCH for-maint] apply: gitdiff_verify_name(): accept "/dev/null\r"

From: Laszlo Ersek <[email-masked]>
Date: Tue, 23 Sep 2014 22:32:04 +0200

On 09/23/14 22:02, Junio C Hamano wrote:
> Laszlo Ersek <[email-masked]> writes:
> 
>> On 09/23/14 20:54, Junio C Hamano wrote:
>> ...
>>> SMTP transport may be CRLF-unsafe, so I have a suspicion that it may
>>> turn out that what you are trying to do might be an equilvalent of
>>>
>>> 	git format-patch ... |
>>>         # first lose all \r\n
>>>         dos2unix | 
>>> 	# then make everything \r\n
>>>         unix2dos |
>>>         # and apply
>>>         git am
>>>
>>> which is not workable in the first place.  I dunno.
>>
>> I agree with your analysis. It is indeed the MTA...
>>>    - CR and LF MUST only occur together as CRLF; they MUST NOT appear
>>>      independently in the body.
>>
>> But why is this situation "not workable"? The same happens with *all*
>> patches that people mail around, it's just not visible to them, because
>> git-am strips all CRs indiscriminately.
> 
> It is not "git am" or "git apply" that "strips all CRs
> indiscriminately".  I just tried to apply 0001-add-f2 without
> letting your MTA/MUA corrupt it on "master" branch in the repository
> you prepared that patch from, i.e.
> 
> 	git checkout master^0 ;# go back
>         git am 0001-add-f2* ;# apply that "+hello world\r\n" patch
>         git diff branch ;# nothing

When you did this, was am.keepcr=true in effect?

Thanks
Laszlo