summaryrefslogtreecommitdiff
path: root/subversion/libsvn_wc/conflicts.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2016-12-01 07:45:05 +0000
committerPeter Wemm <peter@FreeBSD.org>2016-12-01 07:45:05 +0000
commit608944fa5a78d7f517c9c73a7ded6c130cc97b83 (patch)
tree9dce7c56ce4cbd36bb5457661d50b23d30c3533c /subversion/libsvn_wc/conflicts.c
parentc94cceea9c2262c5b2ad5f215bb9a8ae48b02764 (diff)
Diffstat (limited to 'subversion/libsvn_wc/conflicts.c')
-rw-r--r--subversion/libsvn_wc/conflicts.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/subversion/libsvn_wc/conflicts.c b/subversion/libsvn_wc/conflicts.c
index ae0b348c354c..f04c6de59481 100644
--- a/subversion/libsvn_wc/conflicts.c
+++ b/subversion/libsvn_wc/conflicts.c
@@ -1622,7 +1622,14 @@ build_text_conflict_resolve_items(svn_skel_t **work_items,
}
case svn_wc_conflict_choose_mine_full:
{
- install_from_abspath = mine_abspath;
+ /* In case of selecting to resolve the conflict choosing the full
+ own file, allow the text conflict resolution to just take the
+ existing local file if no merged file was present (case: binary
+ file conflicts do not generate a locally merge file).
+ */
+ install_from_abspath = mine_abspath
+ ? mine_abspath
+ : local_abspath;
break;
}
case svn_wc_conflict_choose_theirs_conflict:
@@ -1633,6 +1640,15 @@ build_text_conflict_resolve_items(svn_skel_t **work_items,
? svn_diff_conflict_display_latest
: svn_diff_conflict_display_modified;
+ if (mine_abspath == NULL)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Conflict on '%s' cannot be resolved to "
+ "'theirs-conflict' or 'mine-conflict' "
+ "because a merged version of the file "
+ "cannot be created."),
+ svn_dirent_local_style(local_abspath,
+ scratch_pool));
+
SVN_ERR(merge_showing_conflicts(&install_from_abspath,
db, local_abspath,
style, merge_options,