Code

72f0a2895d15124edb778cdae93ffe6c7d985f12
[git.git] / merge-recursive.h
1 #ifndef MERGE_RECURSIVE_H
2 #define MERGE_RECURSIVE_H
4 struct merge_options {
5         const char *branch1;
6         const char *branch2;
7         unsigned subtree_merge : 1;
8         unsigned buffer_output : 1;
9         int verbosity;
10         int diff_rename_limit;
11         int merge_rename_limit;
12 };
14 /* merge_trees() but with recursive ancestor consolidation */
15 int merge_recursive(struct merge_options *o,
16                     struct commit *h1,
17                     struct commit *h2,
18                     struct commit_list *ancestors,
19                     struct commit **result);
21 /* rename-detecting three-way merge, no recursion */
22 int merge_trees(struct merge_options *o,
23                 struct tree *head,
24                 struct tree *merge,
25                 struct tree *common,
26                 struct tree **result);
28 /*
29  * "git-merge-recursive" can be fed trees; wrap them into
30  * virtual commits and call merge_recursive() proper.
31  */
32 int merge_recursive_generic(struct merge_options *o,
33                             const unsigned char *head,
34                             const unsigned char *merge,
35                             int num_ca,
36                             const unsigned char **ca,
37                             struct commit **result);
39 void init_merge_options(struct merge_options *o);
40 struct tree *write_tree_from_memory(struct merge_options *o);
42 #endif