]> git.ipfire.org Git - thirdparty/git.git/blame - unpack-trees.h
unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
[thirdparty/git.git] / unpack-trees.h
CommitLineData
16da134b
JS
1#ifndef UNPACK_TREES_H
2#define UNPACK_TREES_H
3
ca885a4f
JH
4#define MAX_UNPACK_TREES 8
5
16da134b 6struct unpack_trees_options;
08aefc9e 7struct exclude_list;
16da134b
JS
8
9typedef int (*merge_fn_t)(struct cache_entry **src,
34110cd4 10 struct unpack_trees_options *options);
16da134b 11
8ccba008
JH
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};
19
16da134b 20struct unpack_trees_options {
5a56da58
SB
21 unsigned int reset,
22 merge,
23 update,
24 index_only,
25 nontrivial_merge,
26 trivial_merges_only,
27 verbose_update,
28 aggressive,
29 skip_unmerged,
30 initial_checkout,
31 diff_index_cached,
08aefc9e 32 skip_sparse_checkout,
5a56da58 33 gently;
16da134b 34 const char *prefix;
9a4d8fdc 35 int pos;
f8a9d428 36 struct dir_struct *dir;
16da134b 37 merge_fn_t fn;
8ccba008 38 struct unpack_trees_error_msgs msgs;
16da134b
JS
39
40 int head_idx;
41 int merge_size;
42
43 struct cache_entry *df_conflict_entry;
d1f2d7e8 44 void *unpack_data;
34110cd4
LT
45
46 struct index_state *dst_index;
32260ad5 47 struct index_state *src_index;
34110cd4 48 struct index_state result;
08aefc9e
NTND
49
50 struct exclude_list *el; /* for internal use */
16da134b
JS
51};
52
933bf40a 53extern int unpack_trees(unsigned n, struct tree_desc *t,
16da134b
JS
54 struct unpack_trees_options *options);
55
34110cd4
LT
56int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o);
57int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o);
58int bind_merge(struct cache_entry **src, struct unpack_trees_options *o);
59int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o);
076b0adc 60
16da134b 61#endif