]> git.proxmox.com Git - libgit2.git/blob - src/merge_driver.h
Merge pull request #3701 from jfultz/fix-0.24.0-changelog
[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 "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
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
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
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);
50
51 /* Merge driver for text files, performs a standard three-way merge */
52 extern git_merge_driver__builtin git_merge_driver__text;
53
54 /* Merge driver for union-style merging */
55 extern git_merge_driver__builtin git_merge_driver__union;
56
57 /* Merge driver for unmergeable (binary) files: always produces conflicts */
58 extern git_merge_driver git_merge_driver__binary;
59
60 #endif