Browse Source

git-merge-recursive: learn to honor merge.conflictstyle

This teaches the low-level ll_xdl_merge() routine to honor
merge.conflictstyle configuration variable, so that merge-recursive
strategy can show the conflicts in the style of user's choice.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 17 years ago
parent
commit
c236bcd061
  1. 2
      builtin-merge-recursive.c
  2. 12
      ll-merge.c

2
builtin-merge-recursive.c

@ -1348,7 +1348,7 @@ static int merge_config(const char *var, const char *value, void *cb)
merge_rename_limit = git_config_int(var, value); merge_rename_limit = git_config_int(var, value);
return 0; return 0;
} }
return git_default_config(var, value, cb); return git_xmerge_config(var, value, cb);
} }


int cmd_merge_recursive(int argc, const char **argv, const char *prefix) int cmd_merge_recursive(int argc, const char **argv, const char *prefix)

12
ll-merge.c

@ -63,6 +63,7 @@ static int ll_xdl_merge(const struct ll_merge_driver *drv_unused,
int virtual_ancestor) int virtual_ancestor)
{ {
xpparam_t xpp; xpparam_t xpp;
int style = 0;


if (buffer_is_binary(orig->ptr, orig->size) || if (buffer_is_binary(orig->ptr, orig->size) ||
buffer_is_binary(src1->ptr, src1->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)); memset(&xpp, 0, sizeof(xpp));
if (git_xmerge_style >= 0)
style = git_xmerge_style;
return xdl_merge(orig, return xdl_merge(orig,
src1, name1, src1, name1,
src2, name2, src2, name2,
&xpp, XDL_MERGE_ZEALOUS, &xpp, XDL_MERGE_ZEALOUS | style,
result); result);
} }


@ -95,10 +98,15 @@ static int ll_union_merge(const struct ll_merge_driver *drv_unused,
char *src, *dst; char *src, *dst;
long size; long size;
const int marker_size = 7; const int marker_size = 7;
int status, saved_style;


int status = ll_xdl_merge(drv_unused, result, path_unused, /* 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, orig, src1, NULL, src2, NULL,
virtual_ancestor); virtual_ancestor);
git_xmerge_style = saved_style;
if (status <= 0) if (status <= 0)
return status; return status;
size = result->size; size = result->size;

Loading…
Cancel
Save