read-tree --debug-unpack
[gitweb.git] / merge-recursive.h
index f37630a8ad07709ae106ddde44a34daf6bad8b16..d8bc7299ee3a70484b2436afd3799fe6f7608422 100644 (file)
@@ -1,20 +1,51 @@
 #ifndef MERGE_RECURSIVE_H
 #define MERGE_RECURSIVE_H
 
-int merge_recursive(struct commit *h1,
+#include "string-list.h"
+
+struct merge_options {
+       const char *branch1;
+       const char *branch2;
+       unsigned subtree_merge : 1;
+       unsigned buffer_output : 1;
+       int verbosity;
+       int diff_rename_limit;
+       int merge_rename_limit;
+       int call_depth;
+       struct strbuf obuf;
+       struct string_list current_file_set;
+       struct string_list current_directory_set;
+};
+
+/* Return a list of user-friendly error messages to be used by merge */
+struct unpack_trees_error_msgs get_porcelain_error_msgs(void);
+
+/* merge_trees() but with recursive ancestor consolidation */
+int merge_recursive(struct merge_options *o,
+                   struct commit *h1,
                    struct commit *h2,
-                   const char *branch1,
-                   const char *branch2,
                    struct commit_list *ancestors,
                    struct commit **result);
 
-int merge_trees(struct tree *head,
+/* rename-detecting three-way merge, no recursion */
+int merge_trees(struct merge_options *o,
+               struct tree *head,
                struct tree *merge,
                struct tree *common,
-               const char *branch1,
-               const char *branch2,
                struct tree **result);
 
-struct tree *write_tree_from_memory(void);
+/*
+ * "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,
+                           const unsigned char *head,
+                           const unsigned char *merge,
+                           int num_ca,
+                           const unsigned char **ca,
+                           struct commit **result);
+
+void init_merge_options(struct merge_options *o);
+struct tree *write_tree_from_memory(struct merge_options *o);
 
 #endif