diff options
| author | Junio C Hamano <gitster@pobox.com> | 2024-03-07 15:59:41 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-03-07 15:59:41 -0800 |
| commit | ae46d5fb98b316767f51a82fc0c1441174995a34 (patch) | |
| tree | cc3dfac4a54bcdb534eb86be1f50a9791ea1a7c9 /merge-ort.c | |
| parent | 76d1cd8e5ec07889db43c15222d5632b90f525b2 (diff) | |
| parent | 342990c7aaef5ac645e89101cb84569caf64baf4 (diff) | |
| download | git-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.c | 16 |
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); } |
