On 08/05, Alexander Mills wrote: > Also, as an aside, this seems to be a bug, but probably a known bug: > > $ git diff-index HEAD; echo $? > > :100755 100755 60e5d683c1eb3e61381b1a8ec2db822b94b9faec > 0000000000000000000000000000000000000000 M cli/npp_check_merge.sh > :100644 100644 35a453544de41e2227ab0afab31a396d299139e9 > 0000000000000000000000000000000000000000 M src/find-projects.ts > :100644 100644 c1ee7bc18e6604cbf0d16653e9366109d6ac2ec9 > 0000000000000000000000000000000000000000 M src/tables.ts > :100644 100644 29d9674fbb48f223f3434179d666b2aa991ad05a > 0000000000000000000000000000000000000000 M > src/vcs-helpers/git-helpers.ts > 0 > > $ git diff-index --quiet HEAD; echo $? > 1 > > different exit codes depending on whether --quiet was used. In this > case, the exit code should be consistent. > The bug is with the `git diff-index` command, as you can see. This is not a bug. 'git diff-index' (and 'git diff') only give an exit code other than 0 in the default case if something actually goes wrong with generating the diff, which in the usual case it shouldn't. To get an exit code from 'git diff-index' if there are differences, you'd have to pass the '--exit-code' flag. The '--quite' flag implies '--exit-code', as there's not much use in 'git diff --quiet' if there's not even an exit code showing whether there are differences or not. The original patch (and more importantly the reasoning why '--exit-code' is not the default behaviour for 'git diff') can be found at [1]. [1]: https://public-inbox.org/git/81b0412b0703131717k7106ee1cg964628f0bda2c83e@xxxxxxxxxxxxxx/ > -alex