]> git.proxmox.com Git - libgit2.git/blob - src/merge_driver.h
New upstream version 1.4.3+dfsg.1
[libgit2.git] / src / merge_driver.h
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 "common.h"
11
12 #include "git2/merge.h"
13 #include "git2/index.h"
14 #include "git2/sys/merge.h"
15
16 struct git_merge_driver_source {
17 git_repository *repo;
18 const char *default_driver;
19 const git_merge_file_options *file_opts;
20
21 const git_index_entry *ancestor;
22 const git_index_entry *ours;
23 const git_index_entry *theirs;
24 };
25
26 typedef struct git_merge_driver__builtin {
27 git_merge_driver base;
28 git_merge_file_favor_t favor;
29 } git_merge_driver__builtin;
30
31 extern int git_merge_driver_global_init(void);
32
33 extern int git_merge_driver_for_path(
34 char **name_out,
35 git_merge_driver **driver_out,
36 git_repository *repo,
37 const char *path);
38
39 /* Merge driver configuration */
40 extern int git_merge_driver_for_source(
41 const char **name_out,
42 git_merge_driver **driver_out,
43 const git_merge_driver_source *src);
44
45 extern int git_merge_driver__builtin_apply(
46 git_merge_driver *self,
47 const char **path_out,
48 uint32_t *mode_out,
49 git_buf *merged_out,
50 const char *filter_name,
51 const git_merge_driver_source *src);
52
53 /* Merge driver for text files, performs a standard three-way merge */
54 extern git_merge_driver__builtin git_merge_driver__text;
55
56 /* Merge driver for union-style merging */
57 extern git_merge_driver__builtin git_merge_driver__union;
58
59 /* Merge driver for unmergeable (binary) files: always produces conflicts */
60 extern git_merge_driver git_merge_driver__binary;
61
62 #endif