Fix severe breakage in "git-apply --whitespace=fix"

735c674 (Trailing whitespace and no newline fix, 2009-07-22) completely
broke --whitespace=fix, causing it to lose all the empty lines in a patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano 2009-07-25 01:29:20 -07:00
Родитель 01ae841ccf
Коммит 422a82f213
2 изменённых файлов: 9 добавлений и 5 удалений

Просмотреть файл

@ -154,7 +154,9 @@ create_patch () {
index e69de29..8bd6648 100644 index e69de29..8bd6648 100644
--- a/target --- a/target
+++ b/target +++ b/target
@@ -0,0 +1 @@ @@ -0,0 +1,3 @@
+An empty line follows
+
+A line with trailing whitespace and no newline_ +A line with trailing whitespace and no newline_
\ No newline at end of file \ No newline at end of file
EOF EOF
@ -162,8 +164,10 @@ create_patch () {
test_expect_success 'trailing whitespace & no newline at the end of file' ' test_expect_success 'trailing whitespace & no newline at the end of file' '
>target && >target &&
create_patch | git apply --whitespace=fix - && create_patch >patch-file &&
grep "newline$" target git apply --whitespace=fix patch-file &&
grep "newline$" target &&
grep "^$" target
' '
test_done test_done

4
ws.c
Просмотреть файл

@ -262,10 +262,10 @@ int ws_fix_copy(char *dst, const char *src, int len, unsigned ws_rule, int *erro
* Strip trailing whitespace * Strip trailing whitespace
*/ */
if (ws_rule & WS_TRAILING_SPACE) { if (ws_rule & WS_TRAILING_SPACE) {
if (1 < len && src[len - 1] == '\n') { if (0 < len && src[len - 1] == '\n') {
add_nl_to_tail = 1; add_nl_to_tail = 1;
len--; len--;
if (1 < len && src[len - 1] == '\r') { if (0 < len && src[len - 1] == '\r') {
add_cr_to_tail = !!(ws_rule & WS_CR_AT_EOL); add_cr_to_tail = !!(ws_rule & WS_CR_AT_EOL);
len--; len--;
} }