Index: subversion/include/svn_client.h =================================================================== --- subversion/include/svn_client.h (revision 1764640) +++ subversion/include/svn_client.h (working copy) @@ -4653,6 +4653,7 @@ svn_client_conflict_text_get_resolution_options(apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, + svn_boolean_t ui_resolutions, apr_pool_t *result_pool, apr_pool_t *scratch_pool); Index: subversion/libsvn_client/conflicts.c =================================================================== --- subversion/libsvn_client/conflicts.c (revision 1764640) +++ subversion/libsvn_client/conflicts.c (working copy) @@ -7084,6 +7084,7 @@ svn_client_conflict_text_get_resolution_options(apr_array_header_t **options, svn_client_conflict_t *conflict, svn_client_ctx_t *ctx, + svn_boolean_t ui_resolutions, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { @@ -7114,9 +7115,22 @@ resolve_text_conflict); add_resolution_option(*options, conflict, - svn_client_conflict_option_merged_text, + svn_client_conflict_option_working_text, _("accept binary file as it appears in the working copy"), resolve_text_conflict); + + // for binary conflicts we exclude the merged_text option in case the + // resolution list is requested for the ui presentation, since this + // option basically equals the behavior of the working_text option an + // we do not want to have two options with the same semantics being + // reported on the other side we need to report both options being valid + // to resolve text conflicts for binary files (example: fixes + // --accept=working not being accepted for binary files) + if (!ui_resolutions) + add_resolution_option(*options, conflict, + svn_client_conflict_option_merged_text, + _("accept binary file as it appears in the working copy"), + resolve_text_conflict); } else { @@ -8460,7 +8474,7 @@ svn_client_conflict_option_t *option; SVN_ERR(svn_client_conflict_text_get_resolution_options( - &resolution_options, conflict, ctx, + &resolution_options, conflict, ctx, FALSE, scratch_pool, scratch_pool)); option = svn_client_conflict_option_find_by_id(resolution_options, option_id); Index: subversion/svn/conflict-callbacks.c =================================================================== --- subversion/svn/conflict-callbacks.c (revision 1764640) +++ subversion/svn/conflict-callbacks.c (working copy) @@ -708,7 +708,7 @@ apr_pool_t *iterpool; SVN_ERR(svn_client_conflict_text_get_resolution_options(&builtin_options, - conflict, ctx, + conflict, ctx, TRUE, scratch_pool, scratch_pool)); nopt = builtin_options->nelts + ARRAY_LEN(extra_resolver_options); @@ -913,10 +913,9 @@ if (knows_something || is_binary) *next_option++ = "r"; - /* The 'mine-full' option selects the ".mine" file so only offer - * it if that file exists. It does not exist for binary files, - * for example (questionable historical behaviour since 1.0). */ - if (my_abspath) + /* The 'mine-full' option selects the ".mine" file for texts or + * the current working directory file for binary files. */ + if (my_abspath || is_binary) *next_option++ = "mf"; *next_option++ = "tf"; Index: subversion/tests/cmdline/resolve_tests.py =================================================================== --- subversion/tests/cmdline/resolve_tests.py (revision 1764640) +++ subversion/tests/cmdline/resolve_tests.py (working copy) @@ -602,7 +602,6 @@ # Test for issue #4647 'auto resolution mine-full fails on binary file' @Issue(4647) -@XFail() def automatic_binary_conflict_resolution(sbox): "resolve -R --accept [base | mf | tf] binary file" Index: subversion/tests/libsvn_client/conflicts-test.c =================================================================== --- subversion/tests/libsvn_client/conflicts-test.c (revision 1764640) +++ subversion/tests/libsvn_client/conflicts-test.c (working copy) @@ -147,7 +147,8 @@ apr_array_header_t *actual; SVN_ERR(svn_client_conflict_text_get_resolution_options(&actual, conflict, - ctx, pool, pool)); + ctx, FALSE, pool, + pool)); SVN_ERR(assert_conflict_options(actual, expected, pool)); return SVN_NO_ERROR;