[PATCH 3/5] Teach --quiet to diff backends.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:59
Subsystem:
the rest · Maintainer:
Linus Torvalds
This teaches git-diff-files, git-diff-index and git-diff-tree backends to exit early under --quiet option. Signed-off-by: Junio C Hamano <redacted> --- diff-lib.c | 6 ++++++ tree-diff.c | 2 ++ 2 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/diff-lib.c b/diff-lib.c
index f9a1a10..5c5b05b 100644
--- a/diff-lib.c
+++ b/diff-lib.c@@ -324,6 +324,9 @@ int run_diff_files(struct rev_info *revs, int silent_on_removed) struct cache_entry *ce = active_cache[i]; int changed; + if (revs->diffopt.quiet && revs->diffopt.has_changes) + break; + if (!ce_path_match(ce, revs->prune_data)) continue;
@@ -565,6 +568,9 @@ static int diff_cache(struct rev_info *revs, struct cache_entry *ce = *ac; int same = (entries > 1) && ce_same_name(ce, ac[1]); + if (revs->diffopt.quiet && revs->diffopt.has_changes) + break; + if (!ce_path_match(ce, pathspec)) goto skip_entry;
diff --git a/tree-diff.c b/tree-diff.c
index c827582..44cde74 100644
--- a/tree-diff.c
+++ b/tree-diff.c@@ -161,6 +161,8 @@ static void show_entry(struct diff_options *opt, const char *prefix, struct tree int diff_tree(struct tree_desc *t1, struct tree_desc *t2, const char *base, struct diff_options *opt) { while (t1->size | t2->size) { + if (opt->quiet && opt->has_changes) + break; if (opt->nr_paths && t1->size && !interesting(t1, base, opt)) { update_tree_entry(t1); continue;
--
1.5.0.3.1036.g6baf1