On 21.11.2011 19:56, Philip Martin wrote:
Stefan Küng<tortoise...@gmail.com>  writes:

Stumbled upon the following problem with 1.7.1+ (latest 1.7.x branch):

$ svn co http://tvserver/svn/Test/trunk/TortoiseSVN/Languages renametest
$ cd renametest
- now open another console window in subfolder 'de' (so that the
folder is locked and can't be removed)
$ svn mv de de2
A   de2
svn: E720032: Can't move '.....de' to '....de2': The process cannot
access the file because it is being used by another process.

Where does the code fail?  Is it inside the svn_io_file_rename call in
svn_wc_move?

After that, the folder 'de2' is marked as 'missing' when doing an 'svn
st'. Reverting or updating 'restores' that folder, marked as
normal'. But since there was never a commit with that name, the folder
de2' is now marked in the wc as if it is in the repository.

Why does revert restore de2?  It's a copy, revert should revove it.  If
I try to reproduce by interrupting a mv on Linux:

$ svnadmin create repo
$ svn mkdir -mm --parents file://`pwd`/repo/A/B
$ svn mv wc/A wc/X    # interrupt at svn_io_file_rename
$ sqlite3 wc/.svn/wc.db "select op_depth, local_relpath, presence, revision from 
nodes"
0|A/B|normal|1
0|A|normal|1
0||normal|1
1|X|normal|1
1|X/B|normal|1

Running "svn revert -R wc/X" removes the X rows as expected.

Stepping through the code, I see that it fails in io.c, line 3374 apr_file_rename(from_path_apr, to_path_apr, pool);

But it seems it works now as expected. Had updated my working copy of SVN but forgot to do a rebuild so I had a version that's about a week old. Now that I did a rebuild, it works and a revert actually removes the missing folder properly.

But I can't see anything in the changelog that would explain that it works now?

Stefan


--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

Reply via email to