Re: git-apply can't apply patches to CRLF-files
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:27
Salikh Zakirov [off-list ref] writes:
git-apply can't apply the patch to file with windows-style CRLF line endings, even if the patch was generated by git-format-patch.
I do not think that is the case.
Is this a bug or known deficiency?
This particular reproduction recipe looks like a PEBCAK; it does
not reproduce for me, but I do not have/use unix2dos so I did
DOSsy line endings a bit differently.
git init-db
echo 'abc@' | tr '[@]' '[\015]' >a
git add a
git commit -m initial
echo 'def@' | tr '[@]' '[\015]' >>a
git commit -a -m second
git format-patch HEAD^
git reset --hard HEAD^
git am 0*.txt
The following script reproduces the problem --------- #!/bin/sh set -e mkdir trash cd trash git init-db echo "abc" > a unix2dos a git add a git commit -m "a added" a echo "cde" >> a unix2dos a
Here the first line of a ends with \r\n already end the second line ends with a \n. Does running unix2dos on that do a sensible thing on the first line? Compare it with my above recipe which appends DOSsy line at the end of the file. Having said that, CRLF is unsafe for E-mail transfers anyway, so I think we would need a special option to tell git-apply that it should match '\n' that appears in the patch with '\r\n' in the file being patched. But I do not think that has anything to do with the breakage you saw in your reproduction recipe.