diff options
author | Thomas Rast <trast@student.ethz.ch> | 2009-01-06 19:53:32 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-01-06 23:18:20 -0800 |
commit | e423ffd8a6f46a14ecbb637d909290bd3579cebd (patch) | |
tree | dcb6814de273d92e9577b1ee6e459657b468e7b0 | |
parent | a567fdcb016e8e882ec0a1e044c9caac8f70e693 (diff) | |
download | git-e423ffd8a6f46a14ecbb637d909290bd3579cebd.tar.gz git-e423ffd8a6f46a14ecbb637d909290bd3579cebd.tar.xz |
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>
-rw-r--r-- | diff-no-index.c | 10 | ||||
-rwxr-xr-x | t/t4013-diff-various.sh | 1 | ||||
-rw-r--r-- | t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir | 3 |
3 files changed, 11 insertions, 3 deletions
diff --git a/diff-no-index.c b/diff-no-index.c index b60d3455d..39868e2a8 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -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] != '-') @@ -212,8 +214,10 @@ 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; + else if (!strcmp(argv[i], "--")) + i++; else { j = diff_opt_parse(&revs->diffopt, argv + i, argc - i); if (!j) diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index aeb5405cf..aba53202f 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -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 diff --git a/t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir b/t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir new file mode 100644 index 000000000..6756f8de6 --- /dev/null +++ b/t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir @@ -0,0 +1,3 @@ +$ git diff --no-index --name-status -- dir2 dir +A dir/sub +$ |