merge options: add a conflict style member

Add a conflict_style member to `struct merge_options` and `struct
ll_merge_options` to allow callers to override the default conflict
style. This will be used in the next commit.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Phillip Wood 2024-03-14 17:05:05 +00:00 committed by Junio C Hamano
parent 412aff7b33
commit 135cc712c3
5 changed files with 12 additions and 2 deletions

View file

@ -128,7 +128,9 @@ static enum ll_merge_result ll_xdl_merge(const struct ll_merge_driver *drv_unuse
xmp.level = XDL_MERGE_ZEALOUS; xmp.level = XDL_MERGE_ZEALOUS;
xmp.favor = opts->variant; xmp.favor = opts->variant;
xmp.xpp.flags = opts->xdl_opts; xmp.xpp.flags = opts->xdl_opts;
if (git_xmerge_style >= 0) if (opts->conflict_style >= 0)
xmp.style = opts->conflict_style;
else if (git_xmerge_style >= 0)
xmp.style = git_xmerge_style; xmp.style = git_xmerge_style;
if (marker_size > 0) if (marker_size > 0)
xmp.marker_size = marker_size; xmp.marker_size = marker_size;

View file

@ -78,11 +78,14 @@ struct ll_merge_options {
*/ */
unsigned extra_marker_size; unsigned extra_marker_size;
/* Override the global conflict style. */
int conflict_style;
/* Extra xpparam_t flags as defined in xdiff/xdiff.h. */ /* Extra xpparam_t flags as defined in xdiff/xdiff.h. */
long xdl_opts; long xdl_opts;
}; };
#define LL_MERGE_OPTIONS_INIT {0} #define LL_MERGE_OPTIONS_INIT { .conflict_style = -1 }
enum ll_merge_result { enum ll_merge_result {
LL_MERGE_ERROR = -1, LL_MERGE_ERROR = -1,

View file

@ -1966,6 +1966,7 @@ static int merge_3way(struct merge_options *opt,
ll_opts.renormalize = opt->renormalize; ll_opts.renormalize = opt->renormalize;
ll_opts.extra_marker_size = extra_marker_size; ll_opts.extra_marker_size = extra_marker_size;
ll_opts.xdl_opts = opt->xdl_opts; ll_opts.xdl_opts = opt->xdl_opts;
ll_opts.conflict_style = opt->conflict_style;
if (opt->priv->call_depth) { if (opt->priv->call_depth) {
ll_opts.virtual_ancestor = 1; ll_opts.virtual_ancestor = 1;

View file

@ -1054,6 +1054,7 @@ static int merge_3way(struct merge_options *opt,
ll_opts.renormalize = opt->renormalize; ll_opts.renormalize = opt->renormalize;
ll_opts.extra_marker_size = extra_marker_size; ll_opts.extra_marker_size = extra_marker_size;
ll_opts.xdl_opts = opt->xdl_opts; ll_opts.xdl_opts = opt->xdl_opts;
ll_opts.conflict_style = opt->conflict_style;
if (opt->priv->call_depth) { if (opt->priv->call_depth) {
ll_opts.virtual_ancestor = 1; ll_opts.virtual_ancestor = 1;
@ -3899,6 +3900,8 @@ void init_merge_options(struct merge_options *opt,
opt->renormalize = 0; opt->renormalize = 0;
opt->conflict_style = -1;
merge_recursive_config(opt); merge_recursive_config(opt);
merge_verbosity = getenv("GIT_MERGE_VERBOSITY"); merge_verbosity = getenv("GIT_MERGE_VERBOSITY");
if (merge_verbosity) if (merge_verbosity)

View file

@ -31,6 +31,7 @@ struct merge_options {
/* xdiff-related options (patience, ignore whitespace, ours/theirs) */ /* xdiff-related options (patience, ignore whitespace, ours/theirs) */
long xdl_opts; long xdl_opts;
int conflict_style;
enum { enum {
MERGE_VARIANT_NORMAL = 0, MERGE_VARIANT_NORMAL = 0,
MERGE_VARIANT_OURS, MERGE_VARIANT_OURS,