mirror of
https://github.com/git/git.git
synced 2024-04-30 13:05:09 +02:00
diff: drop useless "status" parameter from diff_result_code()
Many programs use diff_result_code() to get a user-visible program exit code from a diff result (e.g., checking opts.found_changes if --exit-code was requested). This function also takes a "status" parameter, which seems at first glance that it could be used to propagate an error encountered when computing the diff. But it doesn't work that way: - negative values are passed through as-is, but are not appropriate as program exit codes - when --exit-code or --check is in effect, we _ignore_ the passed-in status completely. So a failed diff which did not have a chance to set opts.found_changes would erroneously report "success, no changes" instead of propagating the error. After recent cleanups, neither of these bugs is possible to trigger, as every caller just passes in "0". So rather than fixing them, we can simply drop the useless parameter instead. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c0049ca0d7
commit
5cc6b2d70b
|
@ -687,7 +687,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
|
|||
BUG("malformed internal diff-index command line");
|
||||
run_diff_index(&revs, 0);
|
||||
|
||||
if (!diff_result_code(&revs.diffopt, 0))
|
||||
if (!diff_result_code(&revs.diffopt))
|
||||
suffix = NULL;
|
||||
else
|
||||
suffix = dirty;
|
||||
|
|
|
@ -83,7 +83,7 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
|
|||
if (repo_read_index_preload(the_repository, &rev.diffopt.pathspec, 0) < 0)
|
||||
die_errno("repo_read_index_preload");
|
||||
run_diff_files(&rev, options);
|
||||
result = diff_result_code(&rev.diffopt, 0);
|
||||
result = diff_result_code(&rev.diffopt);
|
||||
release_revisions(&rev);
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ int cmd_diff_index(int argc, const char **argv, const char *prefix)
|
|||
return -1;
|
||||
}
|
||||
run_diff_index(&rev, option);
|
||||
result = diff_result_code(&rev.diffopt, 0);
|
||||
result = diff_result_code(&rev.diffopt);
|
||||
release_revisions(&rev);
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -232,5 +232,5 @@ int cmd_diff_tree(int argc, const char **argv, const char *prefix)
|
|||
diff_free(&opt->diffopt);
|
||||
}
|
||||
|
||||
return diff_result_code(&opt->diffopt, 0);
|
||||
return diff_result_code(&opt->diffopt);
|
||||
}
|
||||
|
|
|
@ -608,7 +608,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
|||
builtin_diff_combined(&rev, argc, argv,
|
||||
ent.objects, ent.nr,
|
||||
first_non_parent);
|
||||
result = diff_result_code(&rev.diffopt, 0);
|
||||
result = diff_result_code(&rev.diffopt);
|
||||
if (1 < rev.diffopt.skip_stat_unmatch)
|
||||
refresh_index_quietly();
|
||||
release_revisions(&rev);
|
||||
|
|
|
@ -549,7 +549,7 @@ static int cmd_log_walk_no_free(struct rev_info *rev)
|
|||
rev->diffopt.flags.check_failed) {
|
||||
return 02;
|
||||
}
|
||||
return diff_result_code(&rev->diffopt, 0);
|
||||
return diff_result_code(&rev->diffopt);
|
||||
}
|
||||
|
||||
static int cmd_log_walk(struct rev_info *rev)
|
||||
|
|
|
@ -973,7 +973,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
|
|||
}
|
||||
log_tree_diff_flush(&rev);
|
||||
|
||||
ret = diff_result_code(&rev.diffopt, 0);
|
||||
ret = diff_result_code(&rev.diffopt);
|
||||
cleanup:
|
||||
strvec_clear(&stash_args);
|
||||
free_stash_info(&info);
|
||||
|
@ -1111,13 +1111,13 @@ static int check_changes_tracked_files(const struct pathspec *ps)
|
|||
diff_setup_done(&rev.diffopt);
|
||||
|
||||
run_diff_index(&rev, DIFF_INDEX_CACHED);
|
||||
if (diff_result_code(&rev.diffopt, 0)) {
|
||||
if (diff_result_code(&rev.diffopt)) {
|
||||
ret = 1;
|
||||
goto done;
|
||||
}
|
||||
|
||||
run_diff_files(&rev, 0);
|
||||
if (diff_result_code(&rev.diffopt, 0)) {
|
||||
if (diff_result_code(&rev.diffopt)) {
|
||||
ret = 1;
|
||||
goto done;
|
||||
}
|
||||
|
|
|
@ -670,7 +670,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
|
|||
setup_revisions(diff_files_args.nr, diff_files_args.v, &rev, &opt);
|
||||
run_diff_files(&rev, 0);
|
||||
|
||||
if (!diff_result_code(&rev.diffopt, 0)) {
|
||||
if (!diff_result_code(&rev.diffopt)) {
|
||||
print_status(flags, ' ', path, ce_oid,
|
||||
displaypath);
|
||||
} else if (!(flags & OPT_CACHED)) {
|
||||
|
|
|
@ -364,7 +364,7 @@ int diff_no_index(struct rev_info *revs,
|
|||
* The return code for --no-index imitates diff(1):
|
||||
* 0 = no changes, 1 = changes, else error
|
||||
*/
|
||||
ret = diff_result_code(&revs->diffopt, 0);
|
||||
ret = diff_result_code(&revs->diffopt);
|
||||
|
||||
out:
|
||||
for (i = 0; i < ARRAY_SIZE(to_free); i++)
|
||||
|
|
6
diff.c
6
diff.c
|
@ -6973,16 +6973,14 @@ void diffcore_std(struct diff_options *options)
|
|||
options->found_follow = 0;
|
||||
}
|
||||
|
||||
int diff_result_code(struct diff_options *opt, int status)
|
||||
int diff_result_code(struct diff_options *opt)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
diff_warn_rename_limit("diff.renameLimit",
|
||||
opt->needed_rename_limit,
|
||||
opt->degraded_cc_to_c);
|
||||
if (!opt->flags.exit_with_status &&
|
||||
!(opt->output_format & DIFF_FORMAT_CHECKDIFF))
|
||||
return status;
|
||||
|
||||
if (opt->flags.exit_with_status &&
|
||||
opt->flags.has_changes)
|
||||
result |= 01;
|
||||
|
|
2
diff.h
2
diff.h
|
@ -647,7 +647,7 @@ int do_diff_cache(const struct object_id *, struct diff_options *);
|
|||
int diff_flush_patch_id(struct diff_options *, struct object_id *, int);
|
||||
void flush_one_hunk(struct object_id *result, git_hash_ctx *ctx);
|
||||
|
||||
int diff_result_code(struct diff_options *, int);
|
||||
int diff_result_code(struct diff_options *);
|
||||
|
||||
int diff_no_index(struct rev_info *,
|
||||
int implicit_no_index, int, const char **);
|
||||
|
|
|
@ -2581,7 +2581,7 @@ int has_unstaged_changes(struct repository *r, int ignore_submodules)
|
|||
rev_info.diffopt.flags.quick = 1;
|
||||
diff_setup_done(&rev_info.diffopt);
|
||||
run_diff_files(&rev_info, 0);
|
||||
result = diff_result_code(&rev_info.diffopt, 0);
|
||||
result = diff_result_code(&rev_info.diffopt);
|
||||
release_revisions(&rev_info);
|
||||
return result;
|
||||
}
|
||||
|
@ -2615,7 +2615,7 @@ int has_uncommitted_changes(struct repository *r,
|
|||
|
||||
diff_setup_done(&rev_info.diffopt);
|
||||
run_diff_index(&rev_info, DIFF_INDEX_CACHED);
|
||||
result = diff_result_code(&rev_info.diffopt, 0);
|
||||
result = diff_result_code(&rev_info.diffopt);
|
||||
release_revisions(&rev_info);
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue