From 73118f89b81f5a3ed1bb56e2517627d56e9ebdfb Mon Sep 17 00:00:00 2001 From: Stephan Beyer Date: Tue, 12 Aug 2008 22:13:59 +0200 Subject: merge-recursive.c: Add more generic merge_recursive_generic() merge_recursive_generic() takes, in comparison to to merge_recursive(), no commit ("struct commit *") arguments but SHA ids ("unsigned char *"), and no commit list of bases but an array of refs ("const char **"). This makes it more generic in the case that it can also take the SHA of a tree to merge trees without commits, for the bases, the head and the remote. merge_recursive_generic() also handles locking and updating of the index, which is a common use case of merge_recursive(). This patch also rewrites builtin-merge-recursive.c to make use of merge_recursive_generic(). By doing this, I stumbled over the limitation of 20 bases and I've added a warning if this limitation is exceeded. This patch qualifies make_virtual_commit() as static again because this function is not needed anymore outside merge-recursive.c. Signed-off-by: Stephan Beyer Signed-off-by: Junio C Hamano --- merge-recursive.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'merge-recursive.h') diff --git a/merge-recursive.h b/merge-recursive.h index 73e4413a80..4dd6476af6 100644 --- a/merge-recursive.h +++ b/merge-recursive.h @@ -14,7 +14,9 @@ int merge_trees(struct tree *head, const char *branch1, const char *branch2, struct tree **result); -struct commit *make_virtual_commit(struct tree *tree, const char *comment); +extern int merge_recursive_generic(const char **base_list, + const unsigned char *head_sha1, const char *head_name, + const unsigned char *next_sha1, const char *next_name); int merge_recursive_config(const char *var, const char *value, void *cb); void merge_recursive_setup(int is_subtree_merge); struct tree *write_tree_from_memory(void); -- cgit v1.2.3