Hi, After issue #3865 [1] got fixed, and the client-layer parts of #3702 [2], there is one remaining hurdle to #3702: during argument parsing, the command line client 'svn' should detect the attempted 'case-only rename', and in that case pass the original destination path to the client layer, instead of the truepath converted one. I'm unsure of the best approach here, so I'm asking for some feedback.
Problem is that 'move_cmd.c' first calls the utility function libsvn_client/cmdline.c#svn_client_args_to_target_array, which returns the target array already truepath-converted, so it doesn't have the original version anymore (and it's not trivial to pick it off of the argument list, because the targets can also come from opt_state->targets (--targets), which accounts for some of the logic in svn_client_args_to_target_array). I see a couple of options (discussed somewhat with Bert during the Hackathon, and on IRC): 1) Rev svn_client_args_to_target_array to take an argument "is_move". That's really the only case where something special needs to happen. Something like this: if (is_move && input_targets->nelts == 2 && strcmp(original_dest_target, true_dest_target) != 0 && strcmp(true_src_target, true_dest_target) == 0) /* Case-only rename on Windows. Use original_dest_target instead of true_dest_target */ 2) Rev svn_client_args_to_target_array to simple always return the original target list, as well as the truepath converted ones. Then let move_cmd.c figure it out (i.e. implement the above logic). 3) Leave svn_client_args_to_target_array alone, and just re-implement (copy-paste) the logic to create the 'master array of targets' inside move_cmd.c (combining the targets from apr_getopt plus any extra targets (--targets)), so it can do all that it needs itself... Option 1 might also be of help for other 'move'-users of svn_client_args_to_target_array (are there any?). Thoughts? [1] http://subversion.tigris.org/issues/show_bug.cgi?id=3865 ('svn' on Windows cannot address scheduled-for-delete file, if another file differing only in case is present on disk) [2] http://subversion.tigris.org/issues/show_bug.cgi?id=3702 (Unable to perform case-only rename on windows) -- Johan