/* * 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