Hi, I realized that "git diff --exit-code" does not honour textconv settings. Maybe this behaviour is desired. It can be partially circumvented by using the "-b" flag if one does not care about whitespace changes. To reproduce this, create an empty repository and run the following commands:
(I was using git version 2.7.3)
$ git config --add diff.void.textconv test
$ echo "foo diff=void" >.gitattributes
$ echo foo >foo
$ git add . && git commit -m "Init"
[master (root-commit) 70c39d9] Init
2 files changed, 2 insertions(+)
create mode 100644 .gitattributes
create mode 100644 foo
$ echo bar >foo
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: foo
no changes added to commit (use "git add" and/or "git commit -a")
$ git diff
$ git diff --exit-code
[exits with 1, no output]
$ git diff --exit-code -b
[exits with 0, no output]
The "test" command is used as it does not generate any output on stdout.
I would expect "git diff --exit-code" to return with exit code 0. If this is
not desired, it should be clearly stated in the man page,
that "--exit-code" does not honour the textconv setting, except if "-b" is
given. Currently this is not clear:
--exit-code
Make the program exit with codes similar to diff(1). That is, it
exits
with 1 if there were differences and 0 means no differences.
Best,
Georg Pichler
signature.asc
Description: OpenPGP digital signature

