]> git.ipfire.org Git - thirdparty/git.git/commitdiff
merge options: add a conflict style member
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 14 Mar 2024 17:05:05 +0000 (17:05 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Mar 2024 17:08:52 +0000 (10:08 -0700)
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>
merge-ll.c
merge-ll.h
merge-ort.c
merge-recursive.c
merge-recursive.h

index ef200e449728e36e17e8233cb04636bb1bb78e83..34514e8bc6363e4d65c646f4e1134da21f255ec0 100644 (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.favor = opts->variant;
        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;
        if (marker_size > 0)
                xmp.marker_size = marker_size;
index af1ee36abdb38eccb74ad3373ee9c7dd446d8c13..d038ee0c1e81f71f75a2655be149b481e5afa19f 100644 (file)
@@ -78,11 +78,14 @@ struct ll_merge_options {
         */
        unsigned extra_marker_size;
 
+       /* Override the global conflict style. */
+       int conflict_style;
+
        /* Extra xpparam_t flags as defined in xdiff/xdiff.h. */
        long xdl_opts;
 };
 
-#define LL_MERGE_OPTIONS_INIT {0}
+#define LL_MERGE_OPTIONS_INIT { .conflict_style = -1 }
 
 enum ll_merge_result {
        LL_MERGE_ERROR = -1,
index 4a02c3ecd99590134605abba223b2f528dfd54ff..a9ab40314517a8604925343a6a2ac8e10ed8f5cf 100644 (file)
@@ -1966,6 +1966,7 @@ static int merge_3way(struct merge_options *opt,
        ll_opts.renormalize = opt->renormalize;
        ll_opts.extra_marker_size = extra_marker_size;
        ll_opts.xdl_opts = opt->xdl_opts;
+       ll_opts.conflict_style = opt->conflict_style;
 
        if (opt->priv->call_depth) {
                ll_opts.virtual_ancestor = 1;
index 02b7b584f957d1feec0a4e1a1d644bc5aa7b793e..33b5f9384e87fbe79115e063c2c4596f47dc9539 100644 (file)
@@ -1054,6 +1054,7 @@ static int merge_3way(struct merge_options *opt,
        ll_opts.renormalize = opt->renormalize;
        ll_opts.extra_marker_size = extra_marker_size;
        ll_opts.xdl_opts = opt->xdl_opts;
+       ll_opts.conflict_style = opt->conflict_style;
 
        if (opt->priv->call_depth) {
                ll_opts.virtual_ancestor = 1;
@@ -3899,6 +3900,8 @@ void init_merge_options(struct merge_options *opt,
 
        opt->renormalize = 0;
 
+       opt->conflict_style = -1;
+
        merge_recursive_config(opt);
        merge_verbosity = getenv("GIT_MERGE_VERBOSITY");
        if (merge_verbosity)
index 3d3b3e3c295deb0dc8470958d01f8ed1e6ef0611..e67d38c30305de9fc34b37dcdcb3f345b1cf97b4 100644 (file)
@@ -31,6 +31,7 @@ struct merge_options {
 
        /* xdiff-related options (patience, ignore whitespace, ours/theirs) */
        long xdl_opts;
+       int conflict_style;
        enum {
                MERGE_VARIANT_NORMAL = 0,
                MERGE_VARIANT_OURS,