summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 048f48a)
raw | patch | inline | side by side (parent: 048f48a)
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | |
Sun, 25 Feb 2007 22:34:54 +0000 (23:34 +0100) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 26 Feb 2007 09:20:55 +0000 (01:20 -0800) |
diff sets the exit status to 0 when no changes were found, to 1
when changes were found, and 2 means error.
We imitate this to be able to use "git diff" in the test scripts.
(Actually, keeping in line with the rest of git, -1 is returned
on error, which corresponds to an exit status 255).
To find out if the diff is not empty, a member called
"found_changes" was introduced in struct diff_options, which is
set in builtin_diff() and fn_out_consume().
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
when changes were found, and 2 means error.
We imitate this to be able to use "git diff" in the test scripts.
(Actually, keeping in line with the rest of git, -1 is returned
on error, which corresponds to an exit status 255).
To find out if the diff is not empty, a member called
"found_changes" was introduced in struct diff_options, which is
set in builtin_diff() and fn_out_consume().
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
diff-lib.c | patch | blob | history | |
diff.c | patch | blob | history | |
diff.h | patch | blob | history |
diff --git a/diff-lib.c b/diff-lib.c
index ae8364b42a0c67e2461fc20e731417b3203c472f..2e916199066db068d80ff5168b3feee6cfba7056 100644 (file)
--- a/diff-lib.c
+++ b/diff-lib.c
if (revs->max_count == -2) {
if (revs->diffopt.nr_paths != 2)
return error("need two files/directories with --no-index");
- queue_diff(&revs->diffopt, revs->diffopt.paths[0],
- revs->diffopt.paths[1]);
+ if (queue_diff(&revs->diffopt, revs->diffopt.paths[0],
+ revs->diffopt.paths[1]))
+ return -1;
diffcore_std(&revs->diffopt);
diff_flush(&revs->diffopt);
- return 0;
+ /*
+ * The return code for --no-index imitates diff(1):
+ * 0 = no changes, 1 = changes, else error
+ */
+ return revs->diffopt.found_changes;
}
if (read_cache() < 0) {
index 6bd456ed42e76a41c62908e5bb0d7df2b329b032..5651152a93a9a18dc95313178a6c695c0bd2c919 100644 (file)
--- a/diff.c
+++ b/diff.c
int nparents, color_diff;
const char **label_path;
struct diff_words_data *diff_words;
+ int *found_changesp;
};
static void free_diff_words_data(struct emit_callback *ecbdata)
const char *set = diff_get_color(ecbdata->color_diff, DIFF_METAINFO);
const char *reset = diff_get_color(ecbdata->color_diff, DIFF_RESET);
+ *(ecbdata->found_changesp) = 1;
+
if (ecbdata->label_path[0]) {
const char *name_a_tab, *name_b_tab;
if (complete_rewrite) {
emit_rewrite_diff(name_a, name_b, one, two,
o->color_diff);
+ o->found_changes = 1;
goto free_ab_and_return;
}
}
else
printf("Binary files %s and %s differ\n",
lbl[0], lbl[1]);
+ o->found_changes = 1;
}
else {
/* Crazy xdl interfaces.. */
memset(&ecbdata, 0, sizeof(ecbdata));
ecbdata.label_path = lbl;
ecbdata.color_diff = o->color_diff;
+ ecbdata.found_changesp = &o->found_changes;
xpp.flags = XDF_NEED_MINIMAL | o->xdl_opts;
xecfg.ctxlen = o->context;
xecfg.flags = XDL_EMIT_FUNCNAMES;