aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-08-20 11:47:55 -0700
committerJunio C Hamano <gitster@pobox.com>2008-08-20 13:28:19 -0700
commitc35539eb10b0ab2a180e523f03ff65dc061bd47e (patch)
tree2b45033cc208e7edd75dd4a2b5803d5eabd774c7
parentc71e917975ecd5fdc4caef245cf18b244213e3f6 (diff)
downloadgit-c35539eb10b0ab2a180e523f03ff65dc061bd47e.tar.gz
git-c35539eb10b0ab2a180e523f03ff65dc061bd47e.tar.xz
diff --check: do not get confused by new blank lines in the middle
The code remembered that the last diff output it saw was an empty line, and tried to reset that state whenever it sees a context line, a non-blank new line, or a new hunk. However, this codepath asks the underlying diff engine to feed diff without any context, and the "just saw an empty line" state was not reset if you added a new blank line in the last hunk of your patch, even if it is not the last line of the file. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--diff.c1
-rwxr-xr-xt/t4015-diff-whitespace.sh11
2 files changed, 12 insertions, 0 deletions
diff --git a/diff.c b/diff.c
index bf5d5f15a..f70e6b491 100644
--- a/diff.c
+++ b/diff.c
@@ -1627,6 +1627,7 @@ static void builtin_checkdiff(const char *name_a, const char *name_b,
xdemitcb_t ecb;
memset(&xecfg, 0, sizeof(xecfg));
+ xecfg.ctxlen = 1; /* at least one context line */
xpp.flags = XDF_NEED_MINIMAL;
ecb.outf = xdiff_outf;
ecb.priv = &data;
diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh
index a27fccc8d..ec98509fd 100755
--- a/t/t4015-diff-whitespace.sh
+++ b/t/t4015-diff-whitespace.sh
@@ -341,4 +341,15 @@ test_expect_success 'checkdiff detects trailing blank lines' '
git diff --check | grep "ends with blank"
'
+test_expect_success 'checkdiff allows new blank lines' '
+ git checkout x &&
+ mv x y &&
+ (
+ echo "/* This is new */" &&
+ echo "" &&
+ cat y
+ ) >x &&
+ git diff --check
+'
+
test_done