Code

Turn unpack_trees_options.msgs into an array + enum
[git.git] / unpack-trees.h
1 #ifndef UNPACK_TREES_H
2 #define UNPACK_TREES_H
4 #define MAX_UNPACK_TREES 8
6 struct unpack_trees_options;
7 struct exclude_list;
9 typedef int (*merge_fn_t)(struct cache_entry **src,
10                 struct unpack_trees_options *options);
12 enum unpack_trees_error_types {
13         ERROR_WOULD_OVERWRITE = 0,
14         ERROR_NOT_UPTODATE_FILE,
15         ERROR_NOT_UPTODATE_DIR,
16         ERROR_WOULD_LOSE_UNTRACKED,
17         ERROR_BIND_OVERLAP,
18         ERROR_SPARSE_NOT_UPTODATE_FILE,
19         ERROR_WOULD_LOSE_ORPHANED,
20         NB_UNPACK_TREES_ERROR_TYPES
21 };
23 struct unpack_trees_options {
24         unsigned int reset,
25                      merge,
26                      update,
27                      index_only,
28                      nontrivial_merge,
29                      trivial_merges_only,
30                      verbose_update,
31                      aggressive,
32                      skip_unmerged,
33                      initial_checkout,
34                      diff_index_cached,
35                      debug_unpack,
36                      skip_sparse_checkout,
37                      gently;
38         const char *prefix;
39         int cache_bottom;
40         struct dir_struct *dir;
41         merge_fn_t fn;
42         const char *msgs[NB_UNPACK_TREES_ERROR_TYPES];
44         int head_idx;
45         int merge_size;
47         struct cache_entry *df_conflict_entry;
48         void *unpack_data;
50         struct index_state *dst_index;
51         struct index_state *src_index;
52         struct index_state result;
54         struct exclude_list *el; /* for internal use */
55 };
57 extern int unpack_trees(unsigned n, struct tree_desc *t,
58                 struct unpack_trees_options *options);
60 int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o);
61 int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o);
62 int bind_merge(struct cache_entry **src, struct unpack_trees_options *o);
63 int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o);
65 #endif