1 module git2.merge;
2 
3 import git2.common;
4 import git2.checkout;
5 import git2.diff;
6 import git2.index;
7 import git2.oid;
8 import git2.util;
9 import git2.types;
10 
11 extern (C):
12 
13 enum git_merge_tree_flag_t {
14 	GIT_MERGE_TREE_FIND_RENAMES = (1 << 0),
15 }
16 mixin _ExportEnumMembers!git_merge_tree_flag_t;
17 
18 enum git_merge_automerge_flags {
19 	GIT_MERGE_AUTOMERGE_NORMAL = 0,
20 	GIT_MERGE_AUTOMERGE_NONE = 1,
21 	GIT_MERGE_AUTOMERGE_FAVOR_OURS = 2,
22 	GIT_MERGE_AUTOMERGE_FAVOR_THEIRS = 3,
23 }
24 mixin _ExportEnumMembers!git_merge_automerge_flags;
25 
26 struct git_merge_tree_opts {
27 	uint version_ = GIT_MERGE_TREE_OPTS_VERSION;
28 	git_merge_tree_flag_t flags;
29 	uint rename_threshold;
30 	uint target_limit;
31 	git_diff_similarity_metric *metric;
32 	git_merge_automerge_flags automerge_flags;
33 }
34 
35 enum GIT_MERGE_TREE_OPTS_VERSION = 1;
36 enum git_merge_tree_opts GIT_MERGE_TREE_OPTS_INIT = { GIT_MERGE_TREE_OPTS_VERSION };
37 
38 int git_merge_base(
39 	git_oid *out_,
40 	git_repository *repo,
41 	const(git_oid)* one,
42 	const(git_oid)* two);
43 int git_merge_base_many(
44 	git_oid *out_,
45 	git_repository *repo,
46 	const(git_oid)* input_array,
47 	size_t length);
48 int git_merge_head_from_ref(
49 	git_merge_head **out_,
50 	git_repository *repo,
51 	git_reference *ref_);
52 int git_merge_head_from_fetchhead(
53 	git_merge_head **out_,
54 	git_repository *repo,
55 	const(char)* branch_name,
56 	const(char)* remote_url,
57 	const(git_oid)* oid);
58 int git_merge_head_from_oid(
59 	git_merge_head **out_,
60 	git_repository *repo,
61 	const(git_oid)* oid);
62 void git_merge_head_free(
63 	git_merge_head *head);
64 int git_merge_trees(
65 	git_index **out_,
66 	git_repository *repo,
67 	const(git_tree)* ancestor_tree,
68 	const(git_tree)* our_tree,
69 	const(git_tree)* their_tree,
70 	const(git_merge_tree_opts)* opts);