mirror of
https://github.com/git/git
synced 2024-07-07 19:39:27 +00:00
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:
parent
4a73aaaf18
commit
475b362c2a
|
@ -301,20 +301,21 @@ 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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Treat git diff with at least one path outside of the
|
* Treat git diff with at least one path outside of the
|
||||||
* repo the same as if the command would have been executed
|
* repo the same as if the command would have been executed
|
||||||
* outside of a git repository. In this case it behaves
|
* outside of a git repository. In this case it behaves
|
||||||
* the same way as "git diff --no-index <a> <b>", which acts
|
* the same way as "git diff --no-index <a> <b>", which acts
|
||||||
* as a colourful "diff" replacement.
|
* as a colourful "diff" replacement.
|
||||||
*/
|
*/
|
||||||
if (nongit || ((argc == i + 2) &&
|
if (nongit || ((argc == i + 2) &&
|
||||||
(!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();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user