Skip to content

Commit

Permalink
Merge branch 'tr/maint-no-index-fixes' into maint
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Junio C Hamano committed Jan 24, 2009
2 parents 46cdcc6 + a324fc4 commit f630171
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 10 deletions.
26 changes: 16 additions & 10 deletions diff-no-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -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] != '-')
Expand All @@ -198,22 +200,19 @@ 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;
for (i = 1; i < argc - 2; ) {
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)
Expand All @@ -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);

Expand Down
1 change: 1 addition & 0 deletions t/t4013-diff-various.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
3 changes: 3 additions & 0 deletions t/t4013/diff.diff_--no-index_--name-status_--_dir2_dir
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
$ git diff --no-index --name-status -- dir2 dir
A dir/sub
$

0 comments on commit f630171

Please sign in to comment.