Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help