summaryrefslogtreecommitdiff
path: root/src/merge_file.c
diff options
context:
space:
mode:
authorVicent Marti <vicent@github.com>2014-01-20 16:26:04 -0800
committerVicent Marti <vicent@github.com>2014-01-20 16:26:04 -0800
commitaf2b969b6f63dafa8c55b88cadbcc7631c2dd30b (patch)
treee55254b0dc5473e95227a189d8b37d1450a7c26a /src/merge_file.c
parente49c98e6efaa444ed73ac3b8318a693801f93184 (diff)
parent0ef19fe14ce5a5f7b5ac90966a56997bf04ea5a9 (diff)
downloadlibgit2-af2b969b6f63dafa8c55b88cadbcc7631c2dd30b.tar.gz
Merge pull request #2061 from ethomson/merge_improvements
Merge improvements
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) {