]> git.proxmox.com Git - libgit2.git/blame - src/merge_driver.h
patch: use strlen to mean string length
[libgit2.git] / src / merge_driver.h
CommitLineData
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
14struct 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
24typedef 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
29extern int git_merge_driver_global_init(void);
30
31extern 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 */
38extern 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
43extern 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 52extern git_merge_driver__builtin git_merge_driver__text;
967e073d
ET
53
54/* Merge driver for union-style merging */
6d8b2cdb 55extern git_merge_driver__builtin git_merge_driver__union;
967e073d
ET
56
57/* Merge driver for unmergeable (binary) files: always produces conflicts */
58extern git_merge_driver git_merge_driver__binary;
59
60#endif