Hi Junio,
Thanks for your quick reply.
if (broken) {
run 'git diff-index' in a subprocess
use the result from 'diff-index' unless the command
aborted
} else if (dirty) {
refresh the index
run the equivalent of 'diff-index' in-core
use the result; if the in-core diff-index aborts,
you are dead already.
}
Great.
This matches my intuition from investigating this problem: the --broken
flag triggers a different code-path. However, it's good to have this
confirmed.
I _think_ the "broken" codepath should be taught to also run "git
update-index --refresh" before it runs "git diff-index" (both in
their own subprocesses, or run in the same subprocess sequencially,
as if "git update-index --refresh && git diff-index" were run), and
your problem may disappear.
For what it's worth, I agree.
Also, just to mention it, fixing this problem isn't a priority (at
least, not for me). Simply removing the --broken flag resolves the
problem and I can live without this functionality.
Cheers,
Paul.