summaryrefslogtreecommitdiff
path: root/src/merge_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/merge_file.c')
-rw-r--r--src/merge_file.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/merge_file.c b/src/merge_file.c
index 48fc46e57..9961ef297 100644
--- a/src/merge_file.c
+++ b/src/merge_file.c
@@ -130,7 +130,7 @@ int git_merge_files(
git_merge_file_input *ancestor,
git_merge_file_input *ours,
git_merge_file_input *theirs,
- git_merge_automerge_flags flags)
+ git_merge_file_options *opts)
{
xmparam_t xmparam;
mmbuffer_t mmbuffer;
@@ -152,11 +152,19 @@ int git_merge_files(
out->path = merge_file_best_path(ancestor, ours, theirs);
out->mode = merge_file_best_mode(ancestor, ours, theirs);
- if (flags == GIT_MERGE_AUTOMERGE_FAVOR_OURS)
+ if (opts && opts->favor == GIT_MERGE_FILE_FAVOR_OURS)
xmparam.favor = XDL_MERGE_FAVOR_OURS;
-
- if (flags == GIT_MERGE_AUTOMERGE_FAVOR_THEIRS)
+ else if (opts && opts->favor == GIT_MERGE_FILE_FAVOR_THEIRS)
xmparam.favor = XDL_MERGE_FAVOR_THEIRS;
+ else if (opts && opts->favor == GIT_MERGE_FILE_FAVOR_UNION)
+ xmparam.favor = XDL_MERGE_FAVOR_UNION;
+
+ xmparam.level =
+ (opts && (opts->flags & GIT_MERGE_FILE_SIMPLIFY_ALNUM)) ?
+ XDL_MERGE_ZEALOUS_ALNUM : XDL_MERGE_ZEALOUS;
+
+ if (opts && opts->style == GIT_MERGE_FILE_STYLE_DIFF3)
+ xmparam.style = XDL_MERGE_DIFF3;
if ((xdl_result = xdl_merge(&ancestor->mmfile, &ours->mmfile,
&theirs->mmfile, &xmparam, &mmbuffer)) < 0) {