diff options
author | Junio C Hamano <junkio@cox.net> | 2007-04-18 01:47:21 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-18 01:50:00 -0700 |
commit | be89cb239e8ec02e23015675cc8b2d60992a6cfc (patch) | |
tree | 8e3421b7ef05e9844a7f21c6908f822b29a3c295 /merge-recursive.c | |
parent | f3ef6b6bbe9bfd3d09130f7e26b87dbe11b93c5b (diff) | |
download | git-be89cb239e8ec02e23015675cc8b2d60992a6cfc.tar.gz |
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>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r-- | merge-recursive.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index 8ec18ad577..5983000971 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -839,12 +839,18 @@ static struct user_merge_fn { char *cmdline; char b_[1]; } *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) { struct user_merge_fn *fn; int blen, nlen; + if (!strcmp(var, "merge.default")) { + default_ll_merge = strdup(value); + return 0; + } + if (strcmp(var, "merge.driver")) return 0; if (!value) @@ -900,8 +906,12 @@ static ll_merge_fn find_ll_merge_fn(void *merge_attr, const char **cmdline) return ll_xdl_merge; else if (ATTR_FALSE(merge_attr)) return ll_binary_merge; - else if (ATTR_UNSET(merge_attr)) - return ll_xdl_merge; + else if (ATTR_UNSET(merge_attr)) { + if (!default_ll_merge) + return ll_xdl_merge; + else + name = default_ll_merge; + } else name = merge_attr; |