diff: move no-index detection to builtin/diff.c
Currently the --no-index option is parsed in diff_no_index(). Move the detection if a no-index diff should be executed to builtin/diff.c, where we can use it for executing diff_no_index() conditionally. This will also allow us to execute other operations conditionally, which will be done in the next patch. There are no functional changes. Helped-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
d2446dfd7f
commit
470faf9654
@ -183,54 +183,12 @@ static int queue_diff(struct diff_options *o,
|
||||
|
||||
void diff_no_index(struct rev_info *revs,
|
||||
int argc, const char **argv,
|
||||
int nongit, const char *prefix)
|
||||
const char *prefix)
|
||||
{
|
||||
int i, prefixlen;
|
||||
int no_index = 0;
|
||||
unsigned deprecated_show_diff_q_option_used = 0;
|
||||
const char *paths[2];
|
||||
|
||||
/* Were we asked to do --no-index explicitly? */
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (!strcmp(argv[i], "--")) {
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
if (!strcmp(argv[i], "--no-index"))
|
||||
no_index = 1;
|
||||
if (argv[i][0] != '-')
|
||||
break;
|
||||
}
|
||||
|
||||
if (!no_index && !nongit) {
|
||||
/*
|
||||
* Inside a git repository, without --no-index. Only
|
||||
* when a path outside the repository is given,
|
||||
* e.g. "git diff /var/tmp/[12]", or "git diff
|
||||
* Makefile /var/tmp/Makefile", allow it to be used as
|
||||
* a colourful "diff" replacement.
|
||||
*/
|
||||
if ((argc != i + 2) ||
|
||||
(path_inside_repo(prefix, argv[i]) &&
|
||||
path_inside_repo(prefix, argv[i+1])))
|
||||
return;
|
||||
}
|
||||
if (argc != i + 2) {
|
||||
if (!no_index) {
|
||||
/*
|
||||
* There was no --no-index and there were not two
|
||||
* paths. It is possible that the user intended
|
||||
* to do an inside-repository operation.
|
||||
*/
|
||||
fprintf(stderr, "Not a git repository\n");
|
||||
fprintf(stderr,
|
||||
"To compare two paths outside a working tree:\n");
|
||||
}
|
||||
/* Give the usage message for non-repository usage and exit. */
|
||||
usagef("git diff %s <path> <path>",
|
||||
no_index ? "--no-index" : "[--no-index]");
|
||||
}
|
||||
|
||||
diff_setup(&revs->diffopt);
|
||||
for (i = 1; i < argc - 2; ) {
|
||||
int j;
|
||||
|
||||
Reference in New Issue
Block a user