diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-02-25 23:34:54 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-02-26 01:20:55 -0800 |
commit | 34a5e1a2d900b5dd9b9c446a3db9fdb3b29e0575 (patch) | |
tree | 7fa9bb068204e40a282a0b3b065069055b787cca /diff-lib.c | |
parent | 048f48a2fdefdf71e7af19ec7111000ce2ebf52e (diff) | |
download | git-34a5e1a2d900b5dd9b9c446a3db9fdb3b29e0575.tar.gz |
diff --no-index: also imitate the exit status of diff(1)
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>
Diffstat (limited to 'diff-lib.c')
-rw-r--r-- | diff-lib.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/diff-lib.c b/diff-lib.c index ae8364b42a..2e91619906 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -210,11 +210,16 @@ int run_diff_files_cmd(struct rev_info *revs, int argc, const char **argv) 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) { |