Indeed there is a bug:
svnadmin create repo
svnmucc -mm -U file://`pwd`/repo put repo/format f propset svn:mime-type application/octet f
svnmucc -mm -U file://`pwd`/repo put repo/db/format f
svn co file://`pwd`/repo@1 wc
echo xx > wc/f
svn up wc
The initial conflict prompt offers:
Conflict discovered in binary file 'wc/f'.
Select: (p) postpone, (tf) their version, (s) show all options:
Trying (s) offers:
(r) - accept the working copy version of file [working]
(tf) - accept the incoming version of file [theirs-full]
(p) - mark the conflict to be resolved later [postpone]
(q) - postpone all remaining conflicts
(s) - show this list (also 'h', '?')
Words in square brackets are the corresponding --accept option arguments.
Select: (p) postpone, (tf) their version, (s) show all options:
Trying (r) gives:
Invalid option; use diff/edit/merge/launch before choosing 'mark resolved'.
but one cannot use those options for a binary file.
Perhaps we need something like this:
Index: ../src/subversion/svn/conflict-callbacks.c
===================================================================
--- ../src/subversion/svn/conflict-callbacks.c (revision 1702397)
+++ ../src/subversion/svn/conflict-callbacks.c (working copy)
@@ -1013,7 +1013,7 @@
the file if they've edited it, or at least looked at
the diff. */
if (opt->choice == svn_wc_conflict_choose_merged
- && ! knows_something)
+ && ! knows_something && ! is_binary)
{
SVN_ERR(svn_cmdline_fprintf(
stderr, iterpool,
or perhaps this:
Index: ../src/subversion/svn/conflict-callbacks.c
===================================================================
--- ../src/subversion/svn/conflict-callbacks.c (revision 1702397)
+++ ../src/subversion/svn/conflict-callbacks.c (working copy)
@@ -1013,7 +1013,7 @@
the file if they've edited it, or at least looked at
the diff. */
if (opt->choice == svn_wc_conflict_choose_merged
- && ! knows_something)
+ && ! knows_something && diff_allowed)
{
SVN_ERR(svn_cmdline_fprintf(
stderr, iterpool,
--
Philip Martin
WANdisco