Jeff King <peff@xxxxxxxx> writes: > Commit 2cfe8a6 (diff --quiet: disable optimization when > --diff-filter=X is used, 2011-03-16) fixes this in some > cases by disabling the optimization when a filter is > present. However, it only tweaked run_diff_files, missing > the similar case in diff_tree. Thus the fix worked only for > diffing the working tree and index, but not between trees. Thanks; a natural question is if we need the same for diff-index, then. > diff --git a/tree-diff.c b/tree-diff.c > index 7a79660..3d08f78 100644 > --- a/tree-diff.c > +++ b/tree-diff.c > @@ -143,6 +143,7 @@ int diff_tree(struct tree_desc *t1, struct tree_desc *t2, > > for (;;) { > if (DIFF_OPT_TST(opt, QUICK) && > + !opt->filter && > DIFF_OPT_TST(opt, HAS_CHANGES)) > break; > if (opt->pathspec.nr) { We probably want to have a helper in diff.c that does int diff_can_quit_early(struct diff_options *opt) { return (DIFF_OPT_TST(opt, QUICK) && !opt->filter && DIFF_OPT_TST(opt, HAS_CHANGES)); } It is possible for us to later add new diffcore transformations that need a similar "do not stop feeding early, as results may be filtered". -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html