From: René Scharfe Date: Sun, 12 Aug 2007 09:40:58 GMT Subject: Re: --exit-code (and --quiet) broken in git-diff? Message-ID: <46BED5AA.7050900@lsrfire.ath.cx> In-Reply-To: <17875.88.10.191.55.1186873960.squirrel@secure.wincent.com> Wincent Colaiuta schrieb: > The git-diff man page documents an "--exit-code" option, as well as a > "--quiet" option which automatically implies the former. > > In my tests on Mac OS X and Bash 3, however, "git diff" always return an > exit code of 0, never of 1, regardless of how I use the "--quiet" and > "--exit-code" options. I see that there are tests in t/t4017-quiet.sh for > the lower-level git-diff-files, git-diff-index, git-diff-tree commands, > but none for the porcelain git-diff. > > Is this a bug with a missing test case? Or am I using this incorrectly? In > the example below I'm looking for differences between the working tree and > the last commit, so I'm using "git diff HEAD", but as you can see, the > exit code is always 0 for "git diff" and "git diff --cached" as well: > > $ git --version > git version 1.5.2.4 > $ mkdir example > $ cd example > $ git init > Initialized empty Git repository in .git/ > $ echo "start" > foo > $ git add foo > $ git commit -m "Add foo" > Created initial commit 85954f6: Add foo > 1 files changed, 1 insertions(+), 0 deletions(-) > create mode 100644 foo > $ git diff --quiet HEAD; echo $? > 0 > $ echo "more" >> foo > $ git diff --quiet HEAD; echo $? > 0 > $ git add foo > $ git diff --quiet HEAD; echo $? > 0 > $ git diff --quiet; echo $? > 0 > $ git diff --exit-code; echo $? > 0 > $ git diff --cached --quiet; echo $? > 0 git diff passes the output through your pager by default, so you see the exit code of that instead of diff's. Set PAGER=cat or redirect the output to /dev/null to get rid of it. A test case for diff would be nice regardless, though. :) René