On Mon, Jul 9, 2012 at 10:41 PM, Dave Huang <khym_at_azeotrope.org> wrote:
> 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.
This reminds me of this recent discussion:
http://svn.haxx.se/users/archive-2012-06/0074.shtml
In that case, a file-in-use was also blocking the completion of an
'update'. But there, the cleanup did work, and the user could continue
(the discussion was more about why 'cleanup' was needed at all in this
case, which is a bit of another issue). So maybe your problem is only
happening with 'merge'.
I think you should file an issue for the unrecoverable working copy
after a "blocked by file-in-use" reverse-merge (maybe also for a
normal merge?). It would be nice though if you could come up with a
nice reproduction recipe, starting from a clean repository (see here
[1] for a template for a reproduction script).
[1] http://subversion.apache.org/docs/community-guide/issues.html#reporting-bugs
--
Johan
Received on 2012-07-10 10:08:41 CEST