mirror of
https://github.com/git/git.git
synced 2024-11-15 05:33:04 +01:00
17e4642667
(This applies only to errors where a plausible operation is impossible due to the particular data, not to errors resulting from misuse of the merge functions.) This will allow builtin-checkout to suppress merge errors if it's going to try more merging methods. Additionally, if unpack_trees() returns with an error, but without printing anything, it will roll back any changes to the index (by rereading the index, currently). This obviously could be done by the caller, but chances are that the caller would forget and debugging this is difficult. Also, future implementations may give unpack_trees() a more efficient way of undoing its changes than the caller could. Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
40 lines
973 B
C
40 lines
973 B
C
#ifndef UNPACK_TREES_H
|
|
#define UNPACK_TREES_H
|
|
|
|
struct unpack_trees_options;
|
|
|
|
typedef int (*merge_fn_t)(struct cache_entry **src,
|
|
struct unpack_trees_options *options,
|
|
int remove);
|
|
|
|
struct unpack_trees_options {
|
|
int reset;
|
|
int merge;
|
|
int update;
|
|
int index_only;
|
|
int nontrivial_merge;
|
|
int trivial_merges_only;
|
|
int verbose_update;
|
|
int aggressive;
|
|
int gently;
|
|
const char *prefix;
|
|
int pos;
|
|
struct dir_struct *dir;
|
|
merge_fn_t fn;
|
|
|
|
int head_idx;
|
|
int merge_size;
|
|
|
|
struct cache_entry *df_conflict_entry;
|
|
void *unpack_data;
|
|
};
|
|
|
|
extern int unpack_trees(unsigned n, struct tree_desc *t,
|
|
struct unpack_trees_options *options);
|
|
|
|
int threeway_merge(struct cache_entry **stages, struct unpack_trees_options *o, int);
|
|
int twoway_merge(struct cache_entry **src, struct unpack_trees_options *o, int);
|
|
int bind_merge(struct cache_entry **src, struct unpack_trees_options *o, int);
|
|
int oneway_merge(struct cache_entry **src, struct unpack_trees_options *o, int);
|
|
|
|
#endif
|