diff: accept -- when using --no-index
Accept -- as an "end of options" marker even when using --no-index. Previously, the -- triggered a "normal" index/tree diff and subsequently failed because of the unrecognized (in that mode) --no-index. Note that the second loop can treat '--' as a normal option, because the preceding checks ensure it is the third-to-last argument. While at it, fix the parsing of "-q" option in --no-index mode as well. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
a567fdcb01
commit
e423ffd8a6
@ -173,8 +173,10 @@ void diff_no_index(struct rev_info *revs,
|
|||||||
|
|
||||||
/* Were we asked to do --no-index explicitly? */
|
/* Were we asked to do --no-index explicitly? */
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (!strcmp(argv[i], "--"))
|
if (!strcmp(argv[i], "--")) {
|
||||||
return;
|
i++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (!strcmp(argv[i], "--no-index"))
|
if (!strcmp(argv[i], "--no-index"))
|
||||||
no_index = 1;
|
no_index = 1;
|
||||||
if (argv[i][0] != '-')
|
if (argv[i][0] != '-')
|
||||||
@ -212,8 +214,10 @@ void diff_no_index(struct rev_info *revs,
|
|||||||
int j;
|
int j;
|
||||||
if (!strcmp(argv[i], "--no-index"))
|
if (!strcmp(argv[i], "--no-index"))
|
||||||
i++;
|
i++;
|
||||||
else if (!strcmp(argv[1], "-q"))
|
else if (!strcmp(argv[i], "-q"))
|
||||||
options |= DIFF_SILENT_ON_REMOVED;
|
options |= DIFF_SILENT_ON_REMOVED;
|
||||||
|
else if (!strcmp(argv[i], "--"))
|
||||||
|
i++;
|
||||||
else {
|
else {
|
||||||
j = diff_opt_parse(&revs->diffopt, argv + i, argc - i);
|
j = diff_opt_parse(&revs->diffopt, argv + i, argc - i);
|
||||||
if (!j)
|
if (!j)
|
||||||
|
@ -261,6 +261,7 @@ diff --patch-with-stat -r initial..side
|
|||||||
diff --patch-with-raw -r initial..side
|
diff --patch-with-raw -r initial..side
|
||||||
diff --name-status dir2 dir
|
diff --name-status dir2 dir
|
||||||
diff --no-index --name-status dir2 dir
|
diff --no-index --name-status dir2 dir
|
||||||
|
diff --no-index --name-status -- dir2 dir
|
||||||
diff master master^ side
|
diff master master^ side
|
||||||
EOF
|
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
|
||||||
|
$
|
Reference in New Issue
Block a user