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>
This commit is contained in:
parent
f3ef6b6bbe
commit
be89cb239e
@ -839,12 +839,18 @@ static struct user_merge_fn {
|
|||||||
char *cmdline;
|
char *cmdline;
|
||||||
char b_[1];
|
char b_[1];
|
||||||
} *ll_user_merge_fns, **ll_user_merge_fns_tail;
|
} *ll_user_merge_fns, **ll_user_merge_fns_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)
|
||||||
{
|
{
|
||||||
struct user_merge_fn *fn;
|
struct user_merge_fn *fn;
|
||||||
int blen, nlen;
|
int blen, nlen;
|
||||||
|
|
||||||
|
if (!strcmp(var, "merge.default")) {
|
||||||
|
default_ll_merge = strdup(value);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcmp(var, "merge.driver"))
|
if (strcmp(var, "merge.driver"))
|
||||||
return 0;
|
return 0;
|
||||||
if (!value)
|
if (!value)
|
||||||
@ -900,8 +906,12 @@ static ll_merge_fn find_ll_merge_fn(void *merge_attr, const char **cmdline)
|
|||||||
return ll_xdl_merge;
|
return ll_xdl_merge;
|
||||||
else if (ATTR_FALSE(merge_attr))
|
else if (ATTR_FALSE(merge_attr))
|
||||||
return ll_binary_merge;
|
return ll_binary_merge;
|
||||||
else if (ATTR_UNSET(merge_attr))
|
else if (ATTR_UNSET(merge_attr)) {
|
||||||
return ll_xdl_merge;
|
if (!default_ll_merge)
|
||||||
|
return ll_xdl_merge;
|
||||||
|
else
|
||||||
|
name = default_ll_merge;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
name = merge_attr;
|
name = merge_attr;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user