Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 1 | #ifndef MERGE_RECURSIVE_H |
| 2 | #define MERGE_RECURSIVE_H |
| 3 | |
Miklos Vajna | 696ee23 | 2008-09-03 19:08:56 +0200 | [diff] [blame] | 4 | #include "string-list.h" |
| 5 | |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 6 | struct merge_options { |
| 7 | const char *branch1; |
| 8 | const char *branch2; |
Avery Pennarun | 8cc5b29 | 2009-11-25 21:23:55 -0500 | [diff] [blame] | 9 | enum { |
Junio C Hamano | 85e51b7 | 2008-06-30 22:18:57 -0700 | [diff] [blame] | 10 | MERGE_RECURSIVE_NORMAL = 0, |
Avery Pennarun | 8cc5b29 | 2009-11-25 21:23:55 -0500 | [diff] [blame] | 11 | MERGE_RECURSIVE_OURS, |
| 12 | MERGE_RECURSIVE_THEIRS, |
| 13 | } recursive_variant; |
Junio C Hamano | 85e51b7 | 2008-06-30 22:18:57 -0700 | [diff] [blame] | 14 | const char *subtree_shift; |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 15 | unsigned buffer_output : 1; |
| 16 | int verbosity; |
| 17 | int diff_rename_limit; |
| 18 | int merge_rename_limit; |
Miklos Vajna | 5033639 | 2008-09-02 23:30:09 +0200 | [diff] [blame] | 19 | int call_depth; |
Miklos Vajna | c7d8492 | 2008-09-03 02:30:03 +0200 | [diff] [blame] | 20 | struct strbuf obuf; |
Miklos Vajna | 696ee23 | 2008-09-03 19:08:56 +0200 | [diff] [blame] | 21 | struct string_list current_file_set; |
| 22 | struct string_list current_directory_set; |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 23 | }; |
| 24 | |
Matthieu Moy | 264b774 | 2009-11-29 13:18:32 +0100 | [diff] [blame] | 25 | /* Return a list of user-friendly error messages to be used by merge */ |
| 26 | struct unpack_trees_error_msgs get_porcelain_error_msgs(void); |
| 27 | |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 28 | /* merge_trees() but with recursive ancestor consolidation */ |
| 29 | int merge_recursive(struct merge_options *o, |
| 30 | struct commit *h1, |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 31 | struct commit *h2, |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 32 | struct commit_list *ancestors, |
| 33 | struct commit **result); |
| 34 | |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 35 | /* rename-detecting three-way merge, no recursion */ |
| 36 | int merge_trees(struct merge_options *o, |
| 37 | struct tree *head, |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 38 | struct tree *merge, |
| 39 | struct tree *common, |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 40 | struct tree **result); |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 41 | |
Miklos Vajna | 8a2fce1 | 2008-08-25 16:25:57 +0200 | [diff] [blame] | 42 | /* |
| 43 | * "git-merge-recursive" can be fed trees; wrap them into |
| 44 | * virtual commits and call merge_recursive() proper. |
| 45 | */ |
| 46 | int merge_recursive_generic(struct merge_options *o, |
| 47 | const unsigned char *head, |
| 48 | const unsigned char *merge, |
| 49 | int num_ca, |
| 50 | const unsigned char **ca, |
| 51 | struct commit **result); |
| 52 | |
| 53 | void init_merge_options(struct merge_options *o); |
| 54 | struct tree *write_tree_from_memory(struct merge_options *o); |
Miklos Vajna | 9047ebb | 2008-08-12 18:45:14 +0200 | [diff] [blame] | 55 | |
Daniel Barkalow | e1b3a2c | 2008-02-07 11:40:05 -0500 | [diff] [blame] | 56 | #endif |