diff options
| author | Junio C Hamano <gitster@pobox.com> | 2023-10-11 13:37:47 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2023-10-11 13:37:47 -0700 |
| commit | b182658e3ed412e21a472db42ebc37130cee68e0 (patch) | |
| tree | 1a74f07508285a4b649042d8ac622bee0938e919 /builtin/merge-tree.c | |
| parent | 6a4c9e7b32c4154345785bd7b8d4afee5fddcead (diff) | |
merge: introduce {copy|clear}_merge_options()
When mostly the same set of options are to be used to perform
multiple merges, one instance of the merge_options structure may
want to be created and used by copying from the same template
instance. We saw such a use recently in "git merge-tree".
Let's make the pattern official by introducing copy_merge_options()
as a supported way to make a copy of the structure, and also give
clear_merge_options() to release any resources held by a copied
instance. Currently we only make a shallow copy, so the former is a
mere structure assignment while the latter is a no-op, but this may
change in the future as the members of merge_options structure
evolve.
Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/merge-tree.c')
| -rw-r--r-- | builtin/merge-tree.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index 7024b5ce2e..a35e0452d6 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -425,10 +425,11 @@ static int real_merge(struct merge_tree_options *o, { struct commit *parent1, *parent2; struct commit_list *merge_bases = NULL; - struct merge_options opt = o->merge_options; struct merge_result result = { 0 }; int show_messages = o->show_messages; + struct merge_options opt; + copy_merge_options(&opt, &o->merge_options); parent1 = get_merge_parent(branch1); if (!parent1) help_unknown_ref(branch1, "merge-tree", @@ -507,6 +508,7 @@ static int real_merge(struct merge_tree_options *o, if (o->use_stdin) putchar(line_termination); merge_finalize(&opt, &result); + clear_merge_options(&opt); return !result.clean; /* result.clean < 0 handled above */ } |
