diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes
authorTim Henigan <tim.henigan@gmail.com>
Thu, 21 Jun 2012 18:09:51 +0000 (14:09 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Jun 2012 17:26:13 +0000 (10:26 -0700)
commit304970dd5d9e542e70eca98932c1e9f26770678e
tree2bc20aad574aa22b6d41dd9c797eb5b1ef474a7a
parent546e0fd9e918b2ea3d9943124641d3b6af59a4fe
diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes

When running 'git diff --quiet <file1> <file2>', if file1 or file2
is outside the repository, it will exit(0) even if the files differ.
It should exit(1) when they differ.

This happens because 'diff_no_index' looks at the 'found_changes'
member from 'diff_options' to determine if changes were made.  This
is the wrong thing to do, since it is only set if xdiff is actually
run and it finds a change (the diff machinery will optimize out the
xdiff call when it is not necessary) and in that case HAS_CHANGED
flag needs to be taken into account.

Use diff_result_code() that knows all these details for the correct
exit value instead.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff-no-index.c
t/t4035-diff-quiet.sh