1 #ifndef INCLUDE_cl_merge_helpers_h__
2 #define INCLUDE_cl_merge_helpers_h__
3 
4 #include "merge.h"
5 #include "git2/merge.h"
6 
7 struct merge_index_entry {
8 	uint16_t mode;
9 	char oid_str[GIT_OID_HEXSZ+1];
10 	int stage;
11 	char path[128];
12 };
13 
14 struct merge_name_entry {
15 	char ancestor_path[128];
16 	char our_path[128];
17 	char their_path[128];
18 };
19 
20 struct merge_index_with_status {
21 	struct merge_index_entry entry;
22 	unsigned int status;
23 };
24 
25 struct merge_reuc_entry {
26 	char path[128];
27 	unsigned int ancestor_mode;
28 	unsigned int our_mode;
29 	unsigned int their_mode;
30 	char ancestor_oid_str[GIT_OID_HEXSZ+1];
31 	char our_oid_str[GIT_OID_HEXSZ+1];
32 	char their_oid_str[GIT_OID_HEXSZ+1];
33 };
34 
35 struct merge_index_conflict_data {
36 	struct merge_index_with_status ancestor;
37 	struct merge_index_with_status ours;
38 	struct merge_index_with_status theirs;
39 	git_merge_diff_t change_type;
40 };
41 
42 int merge_trees_from_branches(
43 	git_index **index, git_repository *repo,
44 	const char *ours_name, const char *theirs_name,
45 	git_merge_options *opts);
46 
47 int merge_commits_from_branches(
48 	git_index **index, git_repository *repo,
49 	const char *ours_name, const char *theirs_name,
50 	git_merge_options *opts);
51 
52 int merge_branches(git_repository *repo,
53 	const char *ours_branch, const char *theirs_branch,
54 	git_merge_options *merge_opts, git_checkout_options *checkout_opts);
55 
56 int merge_test_diff_list(git_merge_diff_list *diff_list, const struct merge_index_entry expected[], size_t expected_len);
57 
58 int merge_test_merge_conflicts(git_vector *conflicts, const struct merge_index_conflict_data expected[], size_t expected_len);
59 
60 int merge_test_index(git_index *index, const struct merge_index_entry expected[], size_t expected_len);
61 
62 int merge_test_names(git_index *index, const struct merge_name_entry expected[], size_t expected_len);
63 
64 int merge_test_reuc(git_index *index, const struct merge_reuc_entry expected[], size_t expected_len);
65 
66 int merge_test_workdir(git_repository *repo, const struct merge_index_entry expected[], size_t expected_len);
67 
68 #endif
69