diff options
author | Miklos Vajna <vmiklos@frugalware.org> | 2008-08-25 16:25:57 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-30 20:46:54 -0700 |
commit | 8a2fce1895c058945d8e2dbd8cb7456cc7450ad8 (patch) | |
tree | 5a5b8822510adea8f39b4f9262b58f8a70f35008 /merge-recursive.h | |
parent | 73118f89b81f5a3ed1bb56e2517627d56e9ebdfb (diff) | |
download | git-8a2fce1895c058945d8e2dbd8cb7456cc7450ad8.tar.gz |
merge-recursive: introduce merge_options
This makes it possible to avoid passing the labels of branches as
arguments to merge_recursive(), merge_trees() and
merge_recursive_generic().
It also takes care of subtree merge, output buffering, verbosity, and
rename limits - these were global variables till now in
merge-recursive.c.
A new function, named init_merge_options(), is introduced as well, it
clears the struct merge_info, then initializes with default values,
finally updates the default values based on the config and environment
variables.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.h')
-rw-r--r-- | merge-recursive.h | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/merge-recursive.h b/merge-recursive.h index 4dd6476af6..72f0a2895d 100644 --- a/merge-recursive.h +++ b/merge-recursive.h @@ -1,26 +1,42 @@ #ifndef MERGE_RECURSIVE_H #define MERGE_RECURSIVE_H -int merge_recursive(struct commit *h1, +struct merge_options { + const char *branch1; + const char *branch2; + unsigned subtree_merge : 1; + unsigned buffer_output : 1; + int verbosity; + int diff_rename_limit; + int merge_rename_limit; +}; + +/* merge_trees() but with recursive ancestor consolidation */ +int merge_recursive(struct merge_options *o, + struct commit *h1, struct commit *h2, - const char *branch1, - const char *branch2, struct commit_list *ancestors, struct commit **result); -int merge_trees(struct tree *head, +/* rename-detecting three-way merge, no recursion */ +int merge_trees(struct merge_options *o, + struct tree *head, struct tree *merge, struct tree *common, - const char *branch1, - const char *branch2, struct tree **result); -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); -extern int merge_recursive_verbosity; +/* + * "git-merge-recursive" can be fed trees; wrap them into + * virtual commits and call merge_recursive() proper. + */ +int merge_recursive_generic(struct merge_options *o, + const unsigned char *head, + const unsigned char *merge, + int num_ca, + const unsigned char **ca, + struct commit **result); + +void init_merge_options(struct merge_options *o); +struct tree *write_tree_from_memory(struct merge_options *o); #endif |