unpack-trees.hon commit merge script: handle many-way octopus (d9a680a)
   1#ifndef UNPACK_TREES_H
   2#define UNPACK_TREES_H
   3
   4#define MAX_UNPACK_TREES 8
   5
   6struct unpack_trees_options;
   7struct exclude_list;
   8
   9typedef int (*merge_fn_t)(struct cache_entry **src,
  10                struct unpack_trees_options *options);
  11
  12struct unpack_trees_error_msgs {
  13        const char *would_overwrite;
  14        const char *not_uptodate_file;
  15        const char *not_uptodate_dir;
  16        const char *would_lose_untracked;
  17        const char *bind_overlap;
  18        const char *sparse_not_uptodate_file;
  19        const char *would_lose_orphaned;
  20};
  21
  22struct unpack_trees_options {
  23        unsigned int reset,
  24                     merge,
  25                     update,
  26                     index_only,
  27                     nontrivial_merge,
  28                     trivial_merges_only,
  29                     verbose_update,
  30                     aggressive,
  31                     skip_unmerged,
  32                     initial_checkout,
  33                     diff_index_cached,
  34                     debug_unpack,
  35                     skip_sparse_checkout,
  36                     gently;
  37        const char *prefix;
  38        int cache_bottom;
  39        struct dir_struct *dir;
  40        merge_fn_t fn;
  41        struct unpack_trees_error_msgs msgs;
  42
  43        int head_idx;
  44        int merge_size;
  45
  46        struct cache_entry *df_conflict_entry;
  47        void *unpack_data;
  48
  49        struct index_state *dst_index;
  50        struct index_state *src_index;
  51        struct index_state result;
  52
  53        struct exclude_list *el; /* for internal use */
  54};
  55
  56extern int unpack_trees(unsigned n, struct tree_desc *t,
  57                struct unpack_trees_options *options);
  58
  59int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o);
  60int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o);
  61int bind_merge(struct cache_entry **src, struct unpack_trees_options *o);
  62int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o);
  63
  64#endif