svn-apply has trouble applying a patch that adds a Windows newline to EOF
authordbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Mar 2013 20:27:30 +0000 (20:27 +0000)
committerdbates@webkit.org <dbates@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Mar 2013 20:27:30 +0000 (20:27 +0000)
commitbcc6c16d52d2ee71d309470f25382c0820800350
treed14565af504de69d0d828756a7b92ccf6087461d
parent0b012b86a34c8eb70102c762ff73a10fc8bb9886
svn-apply has trouble applying a patch that adds a Windows newline to EOF
https://bugs.webkit.org/show_bug.cgi?id=112732

Reviewed by Eric Seidel.

Fixes an issues where a diff that adds a Windows line ending (CRLF) to the end
of an existing file cannot be applied.

In particular, svn-{apply, unapply} compensate for differences in line endings
by converting the line endings in a diff to match the line endings in the target
file. The diff(1) command precedes the last line of a diff that adds a newline
character to the end of a file with the special character sequence "\n \\ No newline at end of file\n"
Svn-{apply, unapply} converts the newline characters (\n) in this character sequence
to \r\n (CRLF) when the target file has Windows line endings and patch(1) complains
when applying this modified diff. Instead, svn-{apply, unapply} should not modify
the newline characters in this special character sequence to match the line endings
in the target file.

* Scripts/VCSUtils.pm:
(parseDiff):
* Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:
Added tests:
    - "SVN: Patch adds Windows newline to EOF and IndexPath has Windows line endings"
    - "SVN: Patch adds Mac newline to EOF and IndexPath has Mac line endings"
    - "Git: Patch adds Windows newline to EOF and IndexPath has Windows line endings"
    - "Git: Patch adds Mac newline to EOF and IndexPath has Mac line endings"
(escapeNewLineCharacters): Added.
(toMacLineEndings): Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@146249 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Tools/ChangeLog
Tools/Scripts/VCSUtils.pm
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl