diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-09-04 02:25:57 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-09-04 11:50:26 -0700 |
commit | 94ea026b358f9fd5395d9344a80f2d5a50e93e1f (patch) | |
tree | bbb48ff8199ac4687ebda43b0639b93be7145422 | |
parent | apply --whitespace=warn/error: diagnose blank at EOF (diff) | |
download | tgif-94ea026b358f9fd5395d9344a80f2d5a50e93e1f.tar.xz |
apply --whitespace: warn blank but not necessarily empty lines at EOF
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>
-rw-r--r-- | builtin-apply.c | 6 | ||||
-rwxr-xr-x | t/t4124-apply-ws-rule.sh | 13 |
2 files changed, 17 insertions, 2 deletions
diff --git a/builtin-apply.c b/builtin-apply.c index 37d3bc069b..6662cc438c 100644 --- a/builtin-apply.c +++ b/builtin-apply.c @@ -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 '\\': diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh index 3a77a9af87..778d45bc07 100755 --- a/t/t4124-apply-ws-rule.sh +++ b/t/t4124-apply-ws-rule.sh @@ -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 |