X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=merge-recursive.h;h=fd138ca14006843a7ce0c38cfde4de580d5ce36e;hb=003b33a8;hp=73e4413a8072a90c1da5a466357774e4b5500a58;hpb=9047ebbc229bf5b99d6c7522293b8cbd1100b747;p=git.git diff --git a/merge-recursive.h b/merge-recursive.h index 73e4413a8..fd138ca14 100644 --- a/merge-recursive.h +++ b/merge-recursive.h @@ -1,24 +1,48 @@ #ifndef MERGE_RECURSIVE_H #define MERGE_RECURSIVE_H -int merge_recursive(struct commit *h1, +#include "string-list.h" + +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; + int call_depth; + struct strbuf obuf; + struct string_list current_file_set; + struct string_list current_directory_set; +}; + +/* 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); -struct commit *make_virtual_commit(struct tree *tree, const char *comment); -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