Re: git-diff: must --exit-code work with --ignore* options?
From: Thell Fowler <hidden>
Date: 2016-06-15 22:47:22
On Sun, 30 Aug 2009, Junio C Hamano wrote:
Jim Meyering [off-list ref] writes:quoted
Junio C Hamano wrote: ...quoted
Subject: [PATCH] diff --quiet: special case "ignore whitespace" options ... Change the semantics of --ignore-whitespace* options to mean more than "omit showing the difference in text". When these options are used, the internal "quick" optimization is turned off, and the status reported with the --exit-code option will now match if any the textual diff output is actually produced. Also rename the internal option "QUIET" to "QUICK" to better reflect what its true purpose is.Thanks again. If there's anything I can to do help (add a test?), let me know.The change has been cooking in 'next' and hopefully be in 1.7.0. I think the updated series adds its own test script, too. Using it in every day scenario, and reporting any breakage you notice before 1.7.0 happens, would be greatly appreciated. Thanks.
Perhaps I'm expected something different than what I _should_ be expecting, but shouldn't --quiet always return the same as --exit-code? # Cut/Paste example mkdir test_ws_quiet && cd test_ws_quiet && git init printf "foo bar \n\n" >f1.txt git add . git commit -m 'f text' printf "foo bar\n\n" >f1.txt git commit -a -m 'f with diff white-space in middle & end' git diff -w --exit-code HEAD^ >/dev/null echo $? # returns '0' which it should git diff -w --quiet HEAD^ echo $? # returns '0' which it should git diff -b --exit-code HEAD^ >/dev/null echo $? # returns '0' which it should git diff -b --quiet HEAD^ >/dev/null echo $? # returns '0' which it should git diff --ignore-space-at-eol --exit-code HEAD^ >/dev/null echo $? # returns '1' which it should git diff --ignore-space-at-eol --quiet HEAD^ echo $? #returns '0' <=== Unexpected. # # Next phase # printf "foobar\n\n">f1.txt git commit -a -m 'f without any spaces' git diff -w --exit-code HEAD^ >/dev/null echo $? # returns '0' which it should git diff -w --quiet HEAD^ echo $? # returns '0' which it should git diff -b --exit-code HEAD^ >/dev/null echo $? # returns '1' which it should git diff -b --quiet HEAD^ >/dev/null echo $? # returns '0' <=== Unexpected git diff --ignore-space-at-eol --exit-code HEAD^ >/dev/null echo $? # returns '1' which it should git diff --ignore-space-at-eol --quiet HEAD^ echo $? #returns '0' <=== Unexpected. -- Thell