summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 3161b4b)
raw | patch | inline | side by side (parent: 3161b4b)
author | Junio C Hamano <junkio@cox.net> | |
Wed, 14 Mar 2007 18:12:13 +0000 (11:12 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Wed, 14 Mar 2007 23:21:19 +0000 (16:21 -0700) |
This adds the command line option 'quiet' to tell 'git diff-*'
that we are not interested in the actual diff contents but only
want to know if there is any change. This option automatically
turns --exit-code on, and turns off output formatting, as it
does not make much sense to show the first hit we happened to
have found.
The --quiet option is silently turned off (but --exit-code is
still in effect, so is silent output) if postprocessing filters
such as pickaxe and diff-filter are used. For all practical
purposes I do not think of a reason to want to use these filters
and not viewing the diff output.
The backends have not been taught about the option with this patch.
That is a topic for later rounds.
Signed-off-by: Junio C Hamano <junkio@cox.net>
that we are not interested in the actual diff contents but only
want to know if there is any change. This option automatically
turns --exit-code on, and turns off output formatting, as it
does not make much sense to show the first hit we happened to
have found.
The --quiet option is silently turned off (but --exit-code is
still in effect, so is silent output) if postprocessing filters
such as pickaxe and diff-filter are used. For all practical
purposes I do not think of a reason to want to use these filters
and not viewing the diff output.
The backends have not been taught about the option with this patch.
That is a topic for later rounds.
Signed-off-by: Junio C Hamano <junkio@cox.net>
diff.c | patch | blob | history | |
diff.h | patch | blob | history |
index 7d938c1484f4bfbdc412786012c6845dc2320d58..d8f9242ea8fe2ee92884623939a85b6587a3ad9d 100644 (file)
--- a/diff.c
+++ b/diff.c
if (options->abbrev <= 0 || 40 < options->abbrev)
options->abbrev = 40; /* full */
+ /*
+ * It does not make sense to show the first hit we happened
+ * to have found. It does not make sense not to return with
+ * exit code in such a case either.
+ */
+ if (options->quiet) {
+ options->output_format = DIFF_FORMAT_NO_OUTPUT;
+ options->exit_with_status = 1;
+ }
+
+ /*
+ * 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)
+ options->quiet = 0;
+
return 0;
}
options->detect_rename = 0;
else if (!strcmp(arg, "--exit-code"))
options->exit_with_status = 1;
+ else if (!strcmp(arg, "--quiet"))
+ options->quiet = 1;
else
return 0;
return 1;
void diffcore_std(struct diff_options *options)
{
+ if (options->quiet)
+ return;
if (options->break_opt != -1)
diffcore_break(options->break_opt);
if (options->detect_rename)
diffcore_order(options->orderfile);
diff_resolve_rename_copy();
diffcore_apply_filter(options->filter);
- if (options->exit_with_status)
- options->has_changes = !!diff_queued_diff.nr;
+
+ options->has_changes = !!diff_queued_diff.nr;
}
fill_filespec(two, sha1, mode);
diff_queue(&diff_queued_diff, one, two);
+ options->has_changes = 1;
}
void diff_change(struct diff_options *options,
fill_filespec(two, new_sha1, new_mode);
diff_queue(&diff_queued_diff, one, two);
+ options->has_changes = 1;
}
void diff_unmerge(struct diff_options *options,
index 81fa265656fba7e9b8a88f192c7e10bbbd0cc6b3..a0d2ce13994c1a8751bf7b207671e95c5bc5db97 100644 (file)
--- a/diff.h
+++ b/diff.h
find_copies_harder:1,
color_diff:1,
color_diff_words:1,
+ has_changes:1,
+ quiet:1,
exit_with_status:1;
int context;
int break_opt;
const char *msg_sep;
const char *stat_sep;
long xdl_opts;
- /* 0 - no differences; only meaningful if exit_with_status set */
- int has_changes;
int stat_width;
int stat_name_width;