Skip to content

Commit

Permalink
diff --quiet: make it synonym to --exit-code >/dev/null
Browse files Browse the repository at this point in the history
The point of --quiet was to return the status as early as possible without
doing any extra processing.  Well behaved scripts, when they expect to run
many diff operations inside, are supposed to run "update-index --refresh"
upfront; we do not want them to pay the price of iterating over the index
and comparing the contents to fix the stat dirtiness, and we avoided most
of the processing in diffcore_std() when --quiet is in effect.

But scripts that adhere to the good practice won't have to pay any more
price than the necessary lstat(2) that will report stat cleanliness, as
long as only -q is given without any fancier diff options.

More importantly, users who do ask for "--quiet -M --filter=D" (in order
to notice only the deletion, not paths that disappeared only because they
have been renamed away) deserve to get the result they asked for, even it
means they have to pay the extra price; the alternative is to get a cheap
early return that gives a result they did not ask for, which is much
worse.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Sep 7, 2008
1 parent 9d86535 commit df58a82
Showing 1 changed file with 0 additions and 10 deletions.
10 changes: 0 additions & 10 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -2393,13 +2393,6 @@ int diff_setup_done(struct diff_options *options)
DIFF_OPT_SET(options, EXIT_WITH_STATUS);
}

/*
* If we postprocess in diffcore, we cannot simply return
* upon the first hit. We need to run diff as usual.
*/
if (options->pickaxe || options->filter)
DIFF_OPT_CLR(options, QUIET);

return 0;
}

Expand Down Expand Up @@ -3391,9 +3384,6 @@ static void diffcore_skip_stat_unmatch(struct diff_options *diffopt)

void diffcore_std(struct diff_options *options)
{
if (DIFF_OPT_TST(options, QUIET))
return;

if (options->skip_stat_unmatch)
diffcore_skip_stat_unmatch(options);
if (options->break_opt != -1)
Expand Down

0 comments on commit df58a82

Please sign in to comment.