Commit | Line | Data |
---|---|---|
16da134b JS |
1 | #ifndef UNPACK_TREES_H |
2 | #define UNPACK_TREES_H | |
3 | ||
ca885a4f JH |
4 | #define MAX_UNPACK_TREES 8 |
5 | ||
16da134b | 6 | struct unpack_trees_options; |
08aefc9e | 7 | struct exclude_list; |
16da134b JS |
8 | |
9 | typedef int (*merge_fn_t)(struct cache_entry **src, | |
34110cd4 | 10 | struct unpack_trees_options *options); |
16da134b | 11 | |
08353ebb MM |
12 | enum unpack_trees_error_types { |
13 | ERROR_WOULD_OVERWRITE = 0, | |
14 | ERROR_NOT_UPTODATE_FILE, | |
15 | ERROR_NOT_UPTODATE_DIR, | |
08402b04 MM |
16 | ERROR_WOULD_LOSE_UNTRACKED_OVERWRITTEN, |
17 | ERROR_WOULD_LOSE_UNTRACKED_REMOVED, | |
08353ebb MM |
18 | ERROR_BIND_OVERLAP, |
19 | ERROR_SPARSE_NOT_UPTODATE_FILE, | |
08402b04 MM |
20 | ERROR_WOULD_LOSE_ORPHANED_OVERWRITTEN, |
21 | ERROR_WOULD_LOSE_ORPHANED_REMOVED, | |
08353ebb | 22 | NB_UNPACK_TREES_ERROR_TYPES |
8ccba008 JH |
23 | }; |
24 | ||
16da134b | 25 | struct unpack_trees_options { |
5a56da58 SB |
26 | unsigned int reset, |
27 | merge, | |
28 | update, | |
29 | index_only, | |
30 | nontrivial_merge, | |
31 | trivial_merges_only, | |
32 | verbose_update, | |
33 | aggressive, | |
34 | skip_unmerged, | |
35 | initial_checkout, | |
36 | diff_index_cached, | |
ba655da5 | 37 | debug_unpack, |
08aefc9e | 38 | skip_sparse_checkout, |
5a56da58 | 39 | gently; |
16da134b | 40 | const char *prefix; |
da165f47 | 41 | int cache_bottom; |
f8a9d428 | 42 | struct dir_struct *dir; |
16da134b | 43 | merge_fn_t fn; |
08353ebb | 44 | const char *msgs[NB_UNPACK_TREES_ERROR_TYPES]; |
16da134b JS |
45 | |
46 | int head_idx; | |
47 | int merge_size; | |
48 | ||
49 | struct cache_entry *df_conflict_entry; | |
d1f2d7e8 | 50 | void *unpack_data; |
34110cd4 LT |
51 | |
52 | struct index_state *dst_index; | |
32260ad5 | 53 | struct index_state *src_index; |
34110cd4 | 54 | struct index_state result; |
08aefc9e NTND |
55 | |
56 | struct exclude_list *el; /* for internal use */ | |
16da134b JS |
57 | }; |
58 | ||
933bf40a | 59 | extern int unpack_trees(unsigned n, struct tree_desc *t, |
16da134b JS |
60 | struct unpack_trees_options *options); |
61 | ||
34110cd4 LT |
62 | int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o); |
63 | int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o); | |
64 | int bind_merge(struct cache_entry **src, struct unpack_trees_options *o); | |
65 | int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o); | |
076b0adc | 66 | |
16da134b | 67 | #endif |