Merge branch 'tr/maint-no-index-fixes'
* tr/maint-no-index-fixes: diff --no-index -q: fix endless loop diff --no-index: test for pager after option parsing diff: accept -- when using --no-index
This commit is contained in:
commit
33256e6b1b
@ -173,8 +173,10 @@ void diff_no_index(struct rev_info *revs,
|
||||
|
||||
/* Were we asked to do --no-index explicitly? */
|
||||
for (i = 1; i < argc; i++) {
|
||||
if (!strcmp(argv[i], "--"))
|
||||
return;
|
||||
if (!strcmp(argv[i], "--")) {
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
if (!strcmp(argv[i], "--no-index"))
|
||||
no_index = 1;
|
||||
if (argv[i][0] != '-')
|
||||
@ -198,13 +200,6 @@ void diff_no_index(struct rev_info *revs,
|
||||
die("git diff %s takes two paths",
|
||||
no_index ? "--no-index" : "[--no-index]");
|
||||
|
||||
/*
|
||||
* If the user asked for our exit code then don't start a
|
||||
* pager or we would end up reporting its exit code instead.
|
||||
*/
|
||||
if (!DIFF_OPT_TST(&revs->diffopt, EXIT_WITH_STATUS))
|
||||
setup_pager();
|
||||
|
||||
diff_setup(&revs->diffopt);
|
||||
if (!revs->diffopt.output_format)
|
||||
revs->diffopt.output_format = DIFF_FORMAT_PATCH;
|
||||
@ -212,8 +207,12 @@ void diff_no_index(struct rev_info *revs,
|
||||
int j;
|
||||
if (!strcmp(argv[i], "--no-index"))
|
||||
i++;
|
||||
else if (!strcmp(argv[1], "-q"))
|
||||
else if (!strcmp(argv[i], "-q")) {
|
||||
options |= DIFF_SILENT_ON_REMOVED;
|
||||
i++;
|
||||
}
|
||||
else if (!strcmp(argv[i], "--"))
|
||||
i++;
|
||||
else {
|
||||
j = diff_opt_parse(&revs->diffopt, argv + i, argc - i);
|
||||
if (!j)
|
||||
@ -222,6 +221,13 @@ void diff_no_index(struct rev_info *revs,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the user asked for our exit code then don't start a
|
||||
* pager or we would end up reporting its exit code instead.
|
||||
*/
|
||||
if (!DIFF_OPT_TST(&revs->diffopt, EXIT_WITH_STATUS))
|
||||
setup_pager();
|
||||
|
||||
if (prefix) {
|
||||
int len = strlen(prefix);
|
||||
|
||||
|
@ -261,6 +261,7 @@ diff --patch-with-stat -r initial..side
|
||||
diff --patch-with-raw -r initial..side
|
||||
diff --name-status dir2 dir
|
||||
diff --no-index --name-status dir2 dir
|
||||
diff --no-index --name-status -- dir2 dir
|
||||
diff master master^ side
|
||||
EOF
|
||||
|
||||
|
3
t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir
Normal file
3
t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir
Normal file
@ -0,0 +1,3 @@
|
||||
$ git diff --no-index --name-status -- dir2 dir
|
||||
A dir/sub
|
||||
$
|
Loading…
Reference in New Issue
Block a user