I tried to roll back some changes to a file by doing a reverse merge,
but I had the file in question open and locked, so svn wasn't able to
complete the merge. However, this has left my working copy broken and
unrecoverable :( (I know I can do a clean checkout, but that's creating
a new WC... the old one remains unrecoverable by normal means).
Pretty much any operation on the WC, such as "svn log", fail with: svn:
E155037: Previous operation has not finished; run 'cleanup' if it was
interrupted
But "svn cleanup" doesn't work because: svn: E720002: Can't open file
'C:\Users\Dave\AppData\Local\Temp\svn-C09EC58D': The system cannot find
the file specified.
It's true that the file it's looking for isn't there, but why does it
expect it to be there? It's in the Temp directory, and svn shouldn't
expected things in there to stay around between different invocations of
svn. That said, I didn't delete it myself--I assume svn must've deleted it.
The .svn/wc.db's WORK_QUEUE table contains:
3399|(file-install Data/DemoCA.zip 1 0 1 0
C:/Users/Dave/AppData/Local/Temp/svn-C09EC58D)
3400|(sync-file-flags Data/DemoCA.zip)
Data/DemoCA.zip is the file I was trying to reverse merge. I deleted
those two rows and was able to do a "svn cleanup", but manually messing
with the wc.db doesn't sound like a good idea.
So, why does "svn cleanup" fail if a temp file can't be found, and can
something be done to remove that requirement? As I mentioned, I don't
think svn should depend on temp files being persistent.
This is with svn 1.7.5 on Windows 7.