merge: introduce {copy|clear}_merge_options()
commitb182658e3ed412e21a472db42ebc37130cee68e0
authorJunio C Hamano <gitster@pobox.com>
Wed, 11 Oct 2023 20:37:47 +0000 (11 13:37 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 11 Oct 2023 20:37:47 +0000 (11 13:37 -0700)
tree1a74f07508285a4b649042d8ac622bee0938e919
parent6a4c9e7b32c4154345785bd7b8d4afee5fddcead
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>
builtin/merge-tree.c
merge-recursive.c
merge-recursive.h