| /* |
| * Copyright (C) the libgit2 contributors. All rights reserved. |
| * |
| * This file is part of libgit2, distributed under the GNU GPL v2 with |
| * a Linking Exception. For full terms see the included COPYING file. |
| */ |
| #ifndef INCLUDE_merge_driver_h__ |
| #define INCLUDE_merge_driver_h__ |
| |
| #include "git2/merge.h" |
| #include "git2/index.h" |
| #include "git2/sys/merge.h" |
| |
| struct git_merge_driver_source { |
| git_repository *repo; |
| const char *default_driver; |
| const git_merge_file_options *file_opts; |
| |
| const git_index_entry *ancestor; |
| const git_index_entry *ours; |
| const git_index_entry *theirs; |
| }; |
| |
| typedef struct git_merge_driver__builtin { |
| git_merge_driver base; |
| git_merge_file_favor_t favor; |
| } git_merge_driver__builtin; |
| |
| extern int git_merge_driver_global_init(void); |
| |
| extern int git_merge_driver_for_path( |
| char **name_out, |
| git_merge_driver **driver_out, |
| git_repository *repo, |
| const char *path); |
| |
| /* Merge driver configuration */ |
| extern int git_merge_driver_for_source( |
| const char **name_out, |
| git_merge_driver **driver_out, |
| const git_merge_driver_source *src); |
| |
| extern int git_merge_driver__builtin_apply( |
| git_merge_driver *self, |
| const char **path_out, |
| uint32_t *mode_out, |
| git_buf *merged_out, |
| const char *filter_name, |
| const git_merge_driver_source *src); |
| |
| /* Merge driver for text files, performs a standard three-way merge */ |
| extern git_merge_driver__builtin git_merge_driver__text; |
| |
| /* Merge driver for union-style merging */ |
| extern git_merge_driver__builtin git_merge_driver__union; |
| |
| /* Merge driver for unmergeable (binary) files: always produces conflicts */ |
| extern git_merge_driver git_merge_driver__binary; |
| |
| #endif |