merge-recursive.h 1.59 KB
Newer Older
Daniel Barkalow's avatar
Daniel Barkalow committed
1 2 3
#ifndef MERGE_RECURSIVE_H
#define MERGE_RECURSIVE_H

4 5
#include "string-list.h"

6
struct merge_options {
7
	const char *ancestor;
8 9
	const char *branch1;
	const char *branch2;
Avery Pennarun's avatar
Avery Pennarun committed
10
	enum {
11
		MERGE_RECURSIVE_NORMAL = 0,
Avery Pennarun's avatar
Avery Pennarun committed
12
		MERGE_RECURSIVE_OURS,
13
		MERGE_RECURSIVE_THEIRS
Avery Pennarun's avatar
Avery Pennarun committed
14
	} recursive_variant;
15
	const char *subtree_shift;
16
	unsigned buffer_output; /* 1: output at end, 2: keep buffered */
17
	unsigned renormalize : 1;
Justin Frankel's avatar
Justin Frankel committed
18
	long xdl_opts;
19
	int verbosity;
20
	int detect_rename;
21 22
	int diff_rename_limit;
	int merge_rename_limit;
23
	int rename_score;
24
	int needed_rename_limit;
25
	int show_rename_progress;
26
	int call_depth;
27
	struct strbuf obuf;
28
	struct hashmap current_file_dir_set;
29
	struct string_list df_conflict_file_set;
30 31 32 33 34
};

/* merge_trees() but with recursive ancestor consolidation */
int merge_recursive(struct merge_options *o,
		    struct commit *h1,
Daniel Barkalow's avatar
Daniel Barkalow committed
35 36 37 38
		    struct commit *h2,
		    struct commit_list *ancestors,
		    struct commit **result);

39 40 41
/* rename-detecting three-way merge, no recursion */
int merge_trees(struct merge_options *o,
		struct tree *head,
Daniel Barkalow's avatar
Daniel Barkalow committed
42 43 44 45
		struct tree *merge,
		struct tree *common,
		struct tree **result);

46 47 48 49 50
/*
 * "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,
51 52
			    const struct object_id *head,
			    const struct object_id *merge,
53
			    int num_ca,
54
			    const struct object_id **ca,
55 56 57 58
			    struct commit **result);

void init_merge_options(struct merge_options *o);
struct tree *write_tree_from_memory(struct merge_options *o);
59

60 61
int parse_merge_opt(struct merge_options *out, const char *s);

Daniel Barkalow's avatar
Daniel Barkalow committed
62
#endif