<http://subversion.tigris.org/issues/show_bug.cgi?id=1532>
svn switch ^/dir_url file_path # This worked, but then ...
svn switch ^/file_url file_path # this errored out.
I filed this issue back in 2003 and it was unfixable then, but with
WC-NG it should be relatively easy, so I'm trying.
We don't strictly need to do this for 1.7.0, but if it is supposed to be
easy with WC-NG then actually doing it should be a good test that we've
got things right.
After trying naively to fix it just by anchoring the reporter/editor
drive at the parent directory (even when the target starts out as a
directory), I found there is a problem at an earlier stage. Starting
from a clean greek-tree checkout:
$ svn switch ^/iota wc/A/C
D wc/A/C
A wc/A/C
$ cat wc/A/C
This is the file 'iota'.
$ svn status wc/A/C
### No output. Should be 'S'.
$ svn info wc/A/C
Node Kind: file
URL: file:///.../repos/A/C ### Should be '.../iota'.
...
The node at 'A/C' on disk has been switched to be a file, and some of
the metadata updated accordingly, but the URL in the metadata has not
been changed.
Tracing it through, the "delete" part looks OK; the result in NODES is
local_relpath = A/C
op_depth = 0
parent_relpath = A
repos_id = 1
repos_path = A/C
revision = 1
presence = not-present
kind = dir
Then, in update_editor.c:make_file_baton(), fb->new_relpath gets set to
'A/C'. The logic that is used in make_dir_baton() correctly accounts
for a switch to a directory, so I'm using that logic in
make_file_baton() also.
Fixed in r1143357.
Now back to the original problem, switching the switched path back to
the original path.
- Julian