diff: skip implicit no-index check when given --no-index

We can invoke no-index mode in two ways: by an explicit
request from the user, or implicitly by noticing that we
have two paths, and at least one is outside the repository.

If the user already told us --no-index, there is no need for
us to do the implicit test at all.  However, we currently
do, and downgrade our "explicit" to DIFF_NO_INDEX_IMPLICIT.

This doesn't have any user-visible behavior, though it's not
immediately obvious why. We only trigger the implicit check
when we have exactly two non-option arguments. And the only
code that cares about implicit versus explicit is an error
message that we show when we _don't_ have two non-option
arguments.

However, it's worth fixing anyway. Besides being slightly
more efficient, it makes the code easier to follow, which
will help when we modify it in future patches.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2016-09-12 20:23:27 -07:00 committed by Junio C Hamano
parent 4a73aaaf18
commit 475b362c2a

View file

@ -301,7 +301,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
break; break;
} }
if (!no_index) if (!no_index) {
prefix = setup_git_directory_gently(&nongit); prefix = setup_git_directory_gently(&nongit);
/* /*
@ -315,6 +315,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
(!path_inside_repo(prefix, argv[i]) || (!path_inside_repo(prefix, argv[i]) ||
!path_inside_repo(prefix, argv[i + 1])))) !path_inside_repo(prefix, argv[i + 1]))))
no_index = DIFF_NO_INDEX_IMPLICIT; no_index = DIFF_NO_INDEX_IMPLICIT;
}
if (!no_index) if (!no_index)
gitmodules_config(); gitmodules_config();