add boolean diff.suppress-blank-empty config option

GNU diff's --suppress-blank-empty option makes it so that diff no
longer outputs trailing white space unless the input data has it.
With this option, empty context lines are now empty also in diff -u output.
Before, they would have a single trailing space.

 * diff.c (diff_suppress_blank_empty): New global.
   (git_diff_basic_config): Set it.
   (fn_out_consume): Honor it.
 * t/t4029-diff-trailing-space.sh: New file.
 * Documentation/config.txt: Document it.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jim Meyering
2008-08-15 13:39:26 +02:00
committed by Junio C Hamano
parent c6670b348c
commit a624eaa782
3 changed files with 56 additions and 0 deletions

39
t/t4029-diff-trailing-space.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
#
# Copyright (c) Jim Meyering
#
test_description='diff honors config option, diff.suppress-blank-empty'
. ./test-lib.sh
cat <<\EOF > exp ||
diff --git a/f b/f
index 5f6a263..8cb8bae 100644
--- a/f
+++ b/f
@@ -1,2 +1,2 @@
-x
+y
EOF
exit 1
test_expect_success \
"$test_description" \
'printf "\nx\n" > f &&
git add f &&
git commit -q -m. f &&
printf "\ny\n" > f &&
git config --bool diff.suppress-blank-empty true &&
git diff f > actual &&
test_cmp exp actual &&
perl -i.bak -p -e "s/^\$/ /" exp &&
git config --bool diff.suppress-blank-empty false &&
git diff f > actual &&
test_cmp exp actual &&
git config --bool --unset diff.suppress-blank-empty &&
git diff f > actual &&
test_cmp exp actual
'
test_done