commit-reach(repo_in_merge_bases_many): report missing commits
Some functions in Git's source code follow the convention that returning a negative value indicates a fatal error, e.g. repository corruption. Let's use this convention in `repo_in_merge_bases()` to report when one of the specified commits is missing (i.e. when `repo_parse_commit()` reports an error). Also adjust the callers of `repo_in_merge_bases()` to handle such negative return values. Note: As of this patch, errors are returned only if any of the specified merge heads is missing. Over the course of the next patches, missing commits will also be reported by the `paint_down_to_common()` function, which is called by `repo_in_merge_bases_many()`, and those errors will be properly propagated back to the caller at that stage. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
207c40e1e4
commit
24876ebf68
@@ -1526,6 +1526,7 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
starts_with(name, "refs/heads/")) {
|
||||
struct object *old_object, *new_object;
|
||||
struct commit *old_commit, *new_commit;
|
||||
int ret2;
|
||||
|
||||
old_object = parse_object(the_repository, old_oid);
|
||||
new_object = parse_object(the_repository, new_oid);
|
||||
@@ -1539,7 +1540,10 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
}
|
||||
old_commit = (struct commit *)old_object;
|
||||
new_commit = (struct commit *)new_object;
|
||||
if (!repo_in_merge_bases(the_repository, old_commit, new_commit)) {
|
||||
ret2 = repo_in_merge_bases(the_repository, old_commit, new_commit);
|
||||
if (ret2 < 0)
|
||||
exit(128);
|
||||
if (!ret2) {
|
||||
rp_error("denying non-fast-forward %s"
|
||||
" (you should pull first)", name);
|
||||
ret = "non-fast-forward";
|
||||
|
||||
Reference in New Issue
Block a user