Code

apply --whitespace: warn blank but not necessarily empty lines at EOF
authorJunio C Hamano <gitster@pobox.com>
Fri, 4 Sep 2009 09:25:57 +0000 (02:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 4 Sep 2009 18:50:26 +0000 (11:50 -0700)
The whitespace error of adding blank lines at the end of file should
trigger if you added a non-empty line at the end, if the contents of the
line is full of whitespaces.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c
t/t4124-apply-ws-rule.sh

index 37d3bc069b1618f81c14cf0c87d31a0f1a3b081c..6662cc438cf0602784c3039b1b146ed4c3fc53cc 100644 (file)
@@ -1957,7 +1957,8 @@ static int apply_one_fragment(struct image *img, struct fragment *frag,
                        is_blank_context = 1;
                        break;
                case ' ':
-                       if (plen && patch[1] == '\n')
+                       if (plen && (ws_rule & WS_BLANK_AT_EOF) &&
+                           ws_blank_line(patch + 1, plen, ws_rule))
                                is_blank_context = 1;
                case '-':
                        memcpy(old, patch + 1, plen);
@@ -1985,7 +1986,8 @@ static int apply_one_fragment(struct image *img, struct fragment *frag,
                                      (first == '+' ? 0 : LINE_COMMON));
                        new += added;
                        if (first == '+' &&
-                           added == 1 && new[-1] == '\n')
+                           (ws_rule & WS_BLANK_AT_EOF) &&
+                           ws_blank_line(patch + 1, plen, ws_rule))
                                added_blank_line = 1;
                        break;
                case '@': case '\\':
index 3a77a9af87a15f9c73795afd7e27d1e29a92db32..778d45bc07b9de420ea7596655b5dbd99fc30194 100755 (executable)
@@ -227,4 +227,17 @@ test_expect_success 'blank at EOF with --whitespace=error' '
        grep "new blank line at EOF" error
 '
 
+test_expect_success 'blank but not empty at EOF' '
+       { echo a; echo b; echo c; } >one &&
+       git add one &&
+       echo "   " >>one &&
+       cat one >expect &&
+       git diff -- one >patch &&
+
+       git checkout one &&
+       git apply --whitespace=warn patch 2>error &&
+       test_cmp expect one &&
+       grep "new blank line at EOF" error
+'
+
 test_done