execv_dashed_external: wait for child on signal death
[gitweb.git] / merge-recursive.h
index fd138ca14006843a7ce0c38cfde4de580d5ce36e..735343b4136d998ee3d2ac3672bdd7b5a5ba017e 100644 (file)
@@ -4,17 +4,30 @@
 #include "string-list.h"
 
 struct merge_options {
+       const char *ancestor;
        const char *branch1;
        const char *branch2;
-       unsigned subtree_merge : 1;
-       unsigned buffer_output : 1;
+       enum {
+               MERGE_RECURSIVE_NORMAL = 0,
+               MERGE_RECURSIVE_OURS,
+               MERGE_RECURSIVE_THEIRS
+       } recursive_variant;
+       const char *subtree_shift;
+       unsigned buffer_output; /* 1: output at end, 2: keep buffered */
+       unsigned renormalize : 1;
+       long xdl_opts;
        int verbosity;
+       int detect_rename;
        int diff_rename_limit;
        int merge_rename_limit;
+       int rename_score;
+       int needed_rename_limit;
+       int show_rename_progress;
        int call_depth;
        struct strbuf obuf;
        struct string_list current_file_set;
        struct string_list current_directory_set;
+       struct string_list df_conflict_file_set;
 };
 
 /* merge_trees() but with recursive ancestor consolidation */
@@ -36,13 +49,15 @@ int merge_trees(struct merge_options *o,
  * virtual commits and call merge_recursive() proper.
  */
 int merge_recursive_generic(struct merge_options *o,
-                           const unsigned char *head,
-                           const unsigned char *merge,
+                           const struct object_id *head,
+                           const struct object_id *merge,
                            int num_ca,
-                           const unsigned char **ca,
+                           const struct object_id **ca,
                            struct commit **result);
 
 void init_merge_options(struct merge_options *o);
 struct tree *write_tree_from_memory(struct merge_options *o);
 
+int parse_merge_opt(struct merge_options *out, const char *s);
+
 #endif