Index: subversion/libsvn_client/conflicts.c =================================================================== --- subversion/libsvn_client/conflicts.c (revision 1764824) +++ subversion/libsvn_client/conflicts.c (working copy) @@ -7193,7 +7193,7 @@ 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); } @@ -8537,6 +8537,7 @@ { apr_array_header_t *resolution_options; svn_client_conflict_option_t *option; + const char *mime_type; SVN_ERR(svn_client_conflict_text_get_resolution_options( &resolution_options, conflict, ctx, @@ -8543,13 +8544,29 @@ scratch_pool, scratch_pool)); option = svn_client_conflict_option_find_by_id(resolution_options, option_id); + + /* Support svn_client_conflict_option_merged_text for binary conflicts by + * mapping this onto the semantically equal + * svn_client_conflict_option_working_text. + */ if (option == NULL) - return svn_error_createf(SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE, - NULL, - _("Inapplicable conflict resolution option " - "given for conflicted path '%s'"), - svn_dirent_local_style(conflict->local_abspath, - scratch_pool)); + { + if (option_id == svn_client_conflict_option_merged_text) { + mime_type = svn_client_conflict_text_get_mime_type(conflict); + if (mime_type && svn_mime_type_is_binary(mime_type)) + option = svn_client_conflict_option_find_by_id(resolution_options, + svn_client_conflict_option_working_text); + } + } + + if (option == NULL) + return svn_error_createf(SVN_ERR_CLIENT_CONFLICT_OPTION_NOT_APPLICABLE, + NULL, + _("Inapplicable conflict resolution option " + "given for conflicted path '%s'"), + svn_dirent_local_style(conflict->local_abspath, + scratch_pool)); + SVN_ERR(svn_client_conflict_text_resolve(conflict, option, ctx, scratch_pool)); return SVN_NO_ERROR; Index: subversion/svn/conflict-callbacks.c =================================================================== --- subversion/svn/conflict-callbacks.c (revision 1764824) +++ subversion/svn/conflict-callbacks.c (working copy) @@ -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 1764824) +++ 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"