Open nils-ballmann opened 7 years ago
And this is in contrast to (cygwin) patch
behavior:
BASH [user@host] ~/Desktop/test
$ cat test.php
<?php
echo "<html><title>asdf</title><body>asdf</body></html>";
?>BASH [user@host] ~/Desktop/test
$ patch -p1 < ./test.php.patch
patching file test.php
BASH [user@host] ~/Desktop/test
$ cat test.php
<?php
echo "<html><title>A real title</title><body>A real body</body></html>";
?>BASH [user@host] ~/Desktop/test
I have observed that patch.py adds an extra newline at the end of the patched file even though the unified patch doesn't alter the line at all.
I know it is good behavior on Linux to have a newline at the end of the file. Some C/C++ coding standards make this even mandatory. But with PHP and some other web technologies, there are strong reasons to NOT have a newline at the end of the file, as it may result in undesired additional newline output to the client, possibly breaking everything.
Small example for illustration, including [LF] as newline ('\n') and [EOF] as the end of the file.
original file (old/test.php):
with patch file (without [LF] and [EOF], generated via
diff -Naur old/test.php new/test.php > test.php.patch
):becomes:
but should be (new/test.php):