Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Allow low-level driver to specify different behaviour during internal merge.
author
Junio C Hamano
<junkio@cox.net>
Wed, 18 Apr 2007 19:18:25 +0000
(12:18 -0700)
committer
Junio C Hamano
<junkio@cox.net>
Wed, 18 Apr 2007 19:30:49 +0000
(12:30 -0700)
This allows [merge "drivername"] to have a variable "recursive"
that names a different low-level merge driver to be used when
merging common ancestors to come up with a virtual ancestor.
Signed-off-by: Junio C Hamano <junkio@cox.net>
merge-recursive.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
153920d
)
diff --git
a/merge-recursive.c
b/merge-recursive.c
index 0f5c28eaff1ccbfd2abd288e9c72d43d86f1d20d..7b5ca8e717217011ffde95434e58d47e401c40e5 100644
(file)
--- a/
merge-recursive.c
+++ b/
merge-recursive.c
@@
-677,6
+677,7
@@
struct ll_merge_driver {
const char *name;
const char *description;
ll_merge_fn fn;
const char *name;
const char *description;
ll_merge_fn fn;
+ const char *recursive;
struct ll_merge_driver *next;
char *cmdline;
};
struct ll_merge_driver *next;
char *cmdline;
};
@@
-934,6
+935,13
@@
static int read_merge_config(const char *var, const char *value)
return 0;
}
return 0;
}
+ if (!strcmp("recursive", ep)) {
+ if (!value)
+ return error("%s: lacks value", var);
+ fn->recursive = strdup(value);
+ return 0;
+ }
+
return 0;
}
return 0;
}
@@
-1013,6
+1021,10
@@
static int ll_merge(mmbuffer_t *result_buf,
merge_attr = git_path_check_merge(a->path);
driver = find_ll_merge_driver(merge_attr);
merge_attr = git_path_check_merge(a->path);
driver = find_ll_merge_driver(merge_attr);
+ if (index_only && driver->recursive) {
+ merge_attr = git_attr(driver->recursive, strlen(driver->recursive));
+ driver = find_ll_merge_driver(merge_attr);
+ }
merge_status = driver->fn(driver, a->path,
&orig, &src1, name1, &src2, name2,
result_buf);
merge_status = driver->fn(driver, a->path,
&orig, &src1, name1, &src2, name2,
result_buf);