From: Andrew Reedick <Andrew.Reedick_at_cbeyond.net>
Date: Tue, 20 Aug 2013 16:02:26 -0400
> -----Original Message-----
When removing dirs, switch will not delete local/private/unversioned files. If there is a local file in a dir tree, then all the versioned files will be removed from your workspace, but a local tree will remain with the local files still in it. That's mostly likely why you see a '?' after the switch.
You shot yourself in the foot. =)
The local copy of the dir prevented switch from running the add. (Switch wasn't able to pull in the versioned copy of the dir.) Then you didn't fix the dir conflict by manually running 'svn copy' yourself to pull in the dir from branch P. When you did the resolve, you told svn that the current state of the dir is correct, and since the current state of the dir was effectively "deleted", you wound up telling svn to delete the file from branch P.
Again, when resolving tree conflicts, you need to manually copy/add/delete/mv manipulate the tree into the correct state before resolving the tree conflict.
You can recover the deleted versioned dirs and files via peg revisions. http://svnbook.red-bean.com/nightly/en/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.resurrect
Right. You deleted the dir from branch P. And you deleted the local/private files/tree as well. Thus no conflict with branch E.
However, if you want to get the dir into branch E, then you should have merged from branch P to branch E (or used 'svn copy ^/branches/P/some_dir ^/branches/E/some_dir.) (But you'll need to restore the dir in branch P first via 'svn copy' and a peg revision.)
> So I copy over the
Argh. No, no, no. That creates "evil twins". What you should have done was 'svn copy svn://..../some_dir_at_1234 some_dir" to add the dir back in. When you run 'svn add' you create brand new objects with no history. Evil twins break merging.
> This is where the problem arises. Subversion deletes the files but not
Svn switch won't delete your local/private files because that would be rude, where rude equals "destroying the user's files." So if you're switching, you need to manage private/local files. Maybe run 'make clean' (assuming you have a clean option) before switching? Or tweak your build script to put all build output in its own dir, instead of putting output in the versioned dirs?
This is an archived mail posted to the Subversion Users mailing list.