summaryrefslogtreecommitdiff
path: root/diff-lib.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-03-18 22:48:06 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-03-18 22:48:06 (GMT)
commitd54fe394acbad36e9d0fd960d5e10f2769a8041b (patch)
treeffd71f86a9a602f4b52d2e518a530d5a2de2921f /diff-lib.c
parent304de2d2d6afc7500fe9b8f2e22dd0a16a902d8b (diff)
parent0c66d6be4f888096865b8f3d5fdc00c83e4ecc3f (diff)
downloadgit-d54fe394acbad36e9d0fd960d5e10f2769a8041b.zip
git-d54fe394acbad36e9d0fd960d5e10f2769a8041b.tar.gz
git-d54fe394acbad36e9d0fd960d5e10f2769a8041b.tar.bz2
Merge branch 'ar/diff'
* ar/diff: Add tests for --quiet option of diff programs try-to-simplify-commit: use diff-tree --quiet machinery. revision.c: explain what tree_difference does Teach --quiet to diff backends. diff --quiet Remove unused diffcore_std_no_resolve Allow git-diff exit with codes similar to diff(1)
Diffstat (limited to 'diff-lib.c')
-rw-r--r--diff-lib.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/diff-lib.c b/diff-lib.c
index 6abb981..5c5b05b 100644
--- a/diff-lib.c
+++ b/diff-lib.c
@@ -170,8 +170,10 @@ static int handle_diff_files_args(struct rev_info *revs,
else if (!strcmp(argv[1], "--theirs"))
revs->max_count = 3;
else if (!strcmp(argv[1], "-n") ||
- !strcmp(argv[1], "--no-index"))
+ !strcmp(argv[1], "--no-index")) {
revs->max_count = -2;
+ revs->diffopt.exit_with_status = 1;
+ }
else if (!strcmp(argv[1], "-q"))
*silent = 1;
else
@@ -237,6 +239,7 @@ int setup_diff_no_index(struct rev_info *revs,
break;
} else if (i < argc - 3 && !strcmp(argv[i], "--no-index")) {
i = argc - 3;
+ revs->diffopt.exit_with_status = 1;
break;
}
if (argc != i + 2 || (!is_outside_repo(argv[i + 1], nongit, prefix) &&
@@ -321,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;
@@ -562,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;