Teach --quiet to diff backends.
authorJunio C Hamano <junkio@cox.net>
Wed, 14 Mar 2007 18:12:51 +0000 (11:12 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 14 Mar 2007 23:21:19 +0000 (16:21 -0700)
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 <junkio@cox.net>
diff-lib.c
tree-diff.c

index f9a1a10cc0319270358d658cd5e83bd5633fbf49..5c5b05bfe32bc90484b5bd6a9c171e0f9b04fbd6 100644 (file)
@@ -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;
 
index c8275823d0eb976e95b256f2bce5497f45d5da77..44cde74caf20ded9cd196c4e5d16f4d9ba251a22 100644 (file)
@@ -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;