Turn unpack_trees_options.msgs into an array + enum
[git/gitweb.git] / unpack-trees.h
blob09e22522fb73657734d47fed437c4d72b394a24e
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
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 */
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