Skip to content

Commit be89cb2

Browse files
author
Junio C Hamano
committed
Allow the default low-level merge driver to be configured.
When no 'merge' attribute is given to a path, merge-recursive uses the built-in xdl-merge as the low-level merge driver. A new configuration item 'merge.default' can name a low-level merge driver of user's choice to be used instead. Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent f3ef6b6 commit be89cb2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

merge-recursive.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -839,12 +839,18 @@ static struct user_merge_fn {
839839
char *cmdline;
840840
char b_[1];
841841
} *ll_user_merge_fns, **ll_user_merge_fns_tail;
842+
static const char *default_ll_merge;
842843

843844
static int read_merge_config(const char *var, const char *value)
844845
{
845846
struct user_merge_fn *fn;
846847
int blen, nlen;
847848

849+
if (!strcmp(var, "merge.default")) {
850+
default_ll_merge = strdup(value);
851+
return 0;
852+
}
853+
848854
if (strcmp(var, "merge.driver"))
849855
return 0;
850856
if (!value)
@@ -900,8 +906,12 @@ static ll_merge_fn find_ll_merge_fn(void *merge_attr, const char **cmdline)
900906
return ll_xdl_merge;
901907
else if (ATTR_FALSE(merge_attr))
902908
return ll_binary_merge;
903-
else if (ATTR_UNSET(merge_attr))
904-
return ll_xdl_merge;
909+
else if (ATTR_UNSET(merge_attr)) {
910+
if (!default_ll_merge)
911+
return ll_xdl_merge;
912+
else
913+
name = default_ll_merge;
914+
}
905915
else
906916
name = merge_attr;
907917

0 commit comments

Comments
 (0)