Merge git://repo.or.cz/git-gui
[gitweb.git] / ll-merge.c
index 5ae74331bc2c55638bc5bf1bbfdc7e340199cb01..4a716146f67c5921646bcde0e8499fb37b993636 100644 (file)
@@ -63,6 +63,7 @@ static int ll_xdl_merge(const struct ll_merge_driver *drv_unused,
                        int virtual_ancestor)
 {
        xpparam_t xpp;
+       int style = 0;
 
        if (buffer_is_binary(orig->ptr, orig->size) ||
            buffer_is_binary(src1->ptr, src1->size) ||
@@ -77,10 +78,12 @@ static int ll_xdl_merge(const struct ll_merge_driver *drv_unused,
        }
 
        memset(&xpp, 0, sizeof(xpp));
+       if (git_xmerge_style >= 0)
+               style = git_xmerge_style;
        return xdl_merge(orig,
                         src1, name1,
                         src2, name2,
-                        &xpp, XDL_MERGE_ZEALOUS,
+                        &xpp, XDL_MERGE_ZEALOUS | style,
                         result);
 }
 
@@ -95,10 +98,15 @@ static int ll_union_merge(const struct ll_merge_driver *drv_unused,
        char *src, *dst;
        long size;
        const int marker_size = 7;
-
-       int status = ll_xdl_merge(drv_unused, result, path_unused,
-                                 orig, src1, NULL, src2, NULL,
-                                 virtual_ancestor);
+       int status, saved_style;
+
+       /* We have to force the RCS "merge" style */
+       saved_style = git_xmerge_style;
+       git_xmerge_style = 0;
+       status = ll_xdl_merge(drv_unused, result, path_unused,
+                             orig, src1, NULL, src2, NULL,
+                             virtual_ancestor);
+       git_xmerge_style = saved_style;
        if (status <= 0)
                return status;
        size = result->size;
@@ -225,7 +233,7 @@ static int ll_ext_merge(const struct ll_merge_driver *fn,
 static struct ll_merge_driver *ll_user_merge, **ll_user_merge_tail;
 static const char *default_ll_merge;
 
-static int read_merge_config(const char *var, const char *value)
+static int read_merge_config(const char *var, const char *value, void *cb)
 {
        struct ll_merge_driver *fn;
        const char *ep, *name;
@@ -309,7 +317,7 @@ static void initialize_ll_merge(void)
        if (ll_user_merge_tail)
                return;
        ll_user_merge_tail = &ll_user_merge;
-       git_config(read_merge_config);
+       git_config(read_merge_config, NULL);
 }
 
 static const struct ll_merge_driver *find_ll_merge_driver(const char *merge_attr)