]>
Commit | Line | Data |
---|---|---|
967e073d ET |
1 | /* |
2 | * Copyright (C) the libgit2 contributors. All rights reserved. | |
3 | * | |
4 | * This file is part of libgit2, distributed under the GNU GPL v2 with | |
5 | * a Linking Exception. For full terms see the included COPYING file. | |
6 | */ | |
7 | #ifndef INCLUDE_merge_driver_h__ | |
8 | #define INCLUDE_merge_driver_h__ | |
9 | ||
10 | #include "git2/merge.h" | |
11 | #include "git2/index.h" | |
12 | #include "git2/sys/merge.h" | |
13 | ||
14 | struct git_merge_driver_source { | |
15 | git_repository *repo; | |
16 | const char *default_driver; | |
17 | const git_merge_file_options *file_opts; | |
18 | ||
19 | const git_index_entry *ancestor; | |
20 | const git_index_entry *ours; | |
21 | const git_index_entry *theirs; | |
22 | }; | |
23 | ||
6d8b2cdb ET |
24 | typedef struct git_merge_driver__builtin { |
25 | git_merge_driver base; | |
26 | git_merge_file_favor_t favor; | |
27 | } git_merge_driver__builtin; | |
28 | ||
967e073d ET |
29 | extern int git_merge_driver_global_init(void); |
30 | ||
31 | extern int git_merge_driver_for_path( | |
32 | char **name_out, | |
33 | git_merge_driver **driver_out, | |
34 | git_repository *repo, | |
35 | const char *path); | |
36 | ||
6d8b2cdb ET |
37 | /* Merge driver configuration */ |
38 | extern int git_merge_driver_for_source( | |
39 | const char **name_out, | |
40 | git_merge_driver **driver_out, | |
41 | const git_merge_driver_source *src); | |
42 | ||
43 | extern int git_merge_driver__builtin_apply( | |
44 | git_merge_driver *self, | |
45 | const char **path_out, | |
46 | uint32_t *mode_out, | |
47 | git_buf *merged_out, | |
48 | const char *filter_name, | |
49 | const git_merge_driver_source *src); | |
967e073d ET |
50 | |
51 | /* Merge driver for text files, performs a standard three-way merge */ | |
6d8b2cdb | 52 | extern git_merge_driver__builtin git_merge_driver__text; |
967e073d ET |
53 | |
54 | /* Merge driver for union-style merging */ | |
6d8b2cdb | 55 | extern git_merge_driver__builtin git_merge_driver__union; |
967e073d ET |
56 | |
57 | /* Merge driver for unmergeable (binary) files: always produces conflicts */ | |
58 | extern git_merge_driver git_merge_driver__binary; | |
59 | ||
60 | #endif |