It may sound stupid, but sometimes I run into version conflicts between two versions of subversion. I mount a directory on a development server with sshfs and then edit the code with my local Vim. For subversion stuff like updating, committing etc. I ssh on the server and do it there. However, sometimes I mix up my shells and accidently do an update or commit in my local shell in the mounted directory. Subversion exits with an error, which is fine. However, when I try to do the same thing on the development server in my ssh session, subversion says that the working directory/subversion has a wrong version. The subversion version on the server is older than the version on my notebook, so I guess my (newer) version somehow upgrades the working directories so they are incompatible with the old version on the development server. Sometimes deleting the .svn/lock files helps, but only if I do it right after I executed the subversion command on my notebook. When I execute the command on the development server afterwards, the lock files disappear and I don't see a way to rescue the checkout. This wouldn't be so bad if the repository wasn't that big. Especially when I made lots of changes and can't commit them.
The only solution I see at the moment is to copy the files I changed somewhere, remove the checkout, do a complete new checkout and copy the files back.
Is there a better solution to rescue a broken checkout and/or my changes?
UPDATE The FAQ Mikael Sundberg linked contained the answer. I write it down here, because he doesn't explictictly mention it. There's a script that can downgrade upgraded repositories, when it's safe:
http://svn.collab.net/repos/svn/trunk/tools/client-side/change-svn-wc-format.py