aboutsummaryrefslogtreecommitdiffstats
path: root/merge-ort.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2024-03-07 15:59:41 -0800
committerJunio C Hamano <gitster@pobox.com>2024-03-07 15:59:41 -0800
commitae46d5fb98b316767f51a82fc0c1441174995a34 (patch)
treecc3dfac4a54bcdb534eb86be1f50a9791ea1a7c9 /merge-ort.c
parent76d1cd8e5ec07889db43c15222d5632b90f525b2 (diff)
parent342990c7aaef5ac645e89101cb84569caf64baf4 (diff)
downloadgit-ae46d5fb98b316767f51a82fc0c1441174995a34.tar.gz
Merge branch 'js/merge-tree-3-trees'
"git merge-tree" has learned that the three trees involved in the 3-way merge only need to be trees, not necessarily commits. * js/merge-tree-3-trees: fill_tree_descriptor(): mark error message for translation cache-tree: avoid an unnecessary check Always check `parse_tree*()`'s return value t4301: verify that merge-tree fails on missing blob objects merge-ort: do check `parse_tree()`'s return value merge-tree: fail with a non-zero exit code on missing tree objects merge-tree: accept 3 trees as arguments
Diffstat (limited to 'merge-ort.c')
-rw-r--r--merge-ort.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/merge-ort.c b/merge-ort.c
index 6a48aea227..817f7b57c7 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -1658,9 +1658,10 @@ static int collect_merge_info(struct merge_options *opt,
info.data = opt;
info.show_all_errors = 1;
- parse_tree(merge_base);
- parse_tree(side1);
- parse_tree(side2);
+ if (parse_tree(merge_base) < 0 ||
+ parse_tree(side1) < 0 ||
+ parse_tree(side2) < 0)
+ return -1;
init_tree_desc(t + 0, merge_base->buffer, merge_base->size);
init_tree_desc(t + 1, side1->buffer, side1->size);
init_tree_desc(t + 2, side2->buffer, side2->size);
@@ -4377,9 +4378,11 @@ static int checkout(struct merge_options *opt,
unpack_opts.verbose_update = (opt->verbosity > 2);
unpack_opts.fn = twoway_merge;
unpack_opts.preserve_ignored = 0; /* FIXME: !opts->overwrite_ignore */
- parse_tree(prev);
+ if (parse_tree(prev) < 0)
+ return -1;
init_tree_desc(&trees[0], prev->buffer, prev->size);
- parse_tree(next);
+ if (parse_tree(next) < 0)
+ return -1;
init_tree_desc(&trees[1], next->buffer, next->size);
ret = unpack_trees(2, trees, &unpack_opts);
@@ -4983,6 +4986,9 @@ redo:
if (result->clean >= 0) {
result->tree = parse_tree_indirect(&working_tree_oid);
+ if (!result->tree)
+ die(_("unable to read tree (%s)"),
+ oid_to_hex(&working_tree_oid));
/* existence of conflicted entries implies unclean */
result->clean &= strmap_empty(&opt->priv->conflicted);
}