diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2024-02-28 09:44:15 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-02-29 08:06:01 -0800 |
commit | f87056ce403b5572683a45efe0e9021777831894 (patch) | |
tree | a1a74dad2de404166616592ab118bb7413b0ad24 /builtin | |
parent | 76e2a0999907644966dfe48b573d6e57e2f1e275 (diff) | |
download | git-f87056ce403b5572683a45efe0e9021777831894.tar.gz |
commit-reach(get_octopus_merge_bases): pass on "missing commits" errors
The `merge_bases_many()` function was just taught to indicate parsing
errors, and now the `repo_get_merge_bases()` function (which is also
surfaced via the `get_merge_bases()` macro) is aware of that, too.
Naturally, the callers need to be adjusted now, too.
Next step: adjust `repo_get_merge_bases_many()`.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/merge-base.c | 8 | ||||
-rw-r--r-- | builtin/merge.c | 6 | ||||
-rw-r--r-- | builtin/pull.c | 5 |
3 files changed, 14 insertions, 5 deletions
diff --git a/builtin/merge-base.c b/builtin/merge-base.c index b0b3838d5f..4d1ff840bd 100644 --- a/builtin/merge-base.c +++ b/builtin/merge-base.c @@ -74,13 +74,17 @@ static int handle_independent(int count, const char **args) static int handle_octopus(int count, const char **args, int show_all) { struct commit_list *revs = NULL; - struct commit_list *result, *rev; + struct commit_list *result = NULL, *rev; int i; for (i = count - 1; i >= 0; i--) commit_list_insert(get_commit_reference(args[i]), &revs); - result = get_octopus_merge_bases(revs); + if (get_octopus_merge_bases(revs, &result) < 0) { + free_commit_list(revs); + free_commit_list(result); + return 128; + } free_commit_list(revs); reduce_heads_replace(&result); diff --git a/builtin/merge.c b/builtin/merge.c index 7c0189fb8f..52828edee0 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1523,7 +1523,11 @@ int cmd_merge(int argc, const char **argv, const char *prefix) } else { struct commit_list *list = remoteheads; commit_list_insert(head_commit, &list); - common = get_octopus_merge_bases(list); + if (get_octopus_merge_bases(list, &common) < 0) { + free(list); + ret = 2; + goto done; + } free(list); } diff --git a/builtin/pull.c b/builtin/pull.c index 3daff0e8b9..72cbb76d52 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -815,7 +815,7 @@ static int get_octopus_merge_base(struct object_id *merge_base, const struct object_id *merge_head, const struct object_id *fork_point) { - struct commit_list *revs = NULL, *result; + struct commit_list *revs = NULL, *result = NULL; commit_list_insert(lookup_commit_reference(the_repository, curr_head), &revs); @@ -825,7 +825,8 @@ static int get_octopus_merge_base(struct object_id *merge_base, commit_list_insert(lookup_commit_reference(the_repository, fork_point), &revs); - result = get_octopus_merge_bases(revs); + if (get_octopus_merge_bases(revs, &result) < 0) + exit(128); free_commit_list(revs); reduce_heads_replace(&result); |