You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by SteveKing <st...@gmx.ch> on 2004/12/18 13:11:58 UTC

unexpected behaviour (bug?) when moving/copying

Hi,

TSVN users discovered some strange behaviour when creating a tag and 
when moving directories around in the working copy. Checking the TSVN 
source came up empty, so I spent some time with the command line client 
to produce a reproduction recipe. Here it goes:

(note: all this is done inside f:\test, a testing directory I created)

$ svnadmin create testrepo
$ svn mkdir file:///f:/test/testrepo/trunk -m "trunk"
Revision 1
$ svn mkdir file:///f:/test/testrepo/tags -m "tags"
Revision 2
$ svn mkdir file:///f:/test/testrepo/tags/version1 -m "version1"
Revision 3
$ svn copy file:///f:/test/testrepo/trunk \
   file:///f:/test/testrepo/tags/version1 -m "tagging trunk"
Revision 4
$ svn ls -v file:///f:/test/testrepo/tags/version1
     4 kueng           Dez 18 14:00 trunk/

As you can see: the copy from /trunk to /tags/version1 created a new 
folder /tags/version1/trunk. I would have expected an error message that 
the target folder /tags/version1 already exists. It was very unexpected 
for the users to find a /trunk folder, even though they never even told 
svn to create it.

A similar behaviour exists when moving files around in the working copy:
$ svnadmin create testrepo
$ svn mkdir file:///f:/test/testrepo/trunk -m "trunk"
$ svn co file:///f:/test/testrepo/trunk testwc
$ svn mkdir f:\test\testwc\currentdir
$ svn mkdir f:\test\testwc\currentdir\dir1
$ svn mkdir f:\test\testwc\currentdir\dir2
$ echo > f:\test\testwc\currentdir\dir1\file1
$ svn add f:\test\testwc\currentdir\dir1\file1
$ echo > f:\test\testwc\currentdir\dir2\file2
$ svn add f:\test\testwc\currentdir\dir2\file2
$ svn mkdir f:\test\testwc\targetdir
$ svn mkdir f:\test\testwc\targetdir\dir1
$ echo > f:\test\testwc\targetdir\dir1\fileA
$ svn add f:\test\testwc\targetdir\dir1\fileA
$ svn ci -m "commit" f:\test\testwc
$ svn mv f:\test\testwc\currentdir\dir2 f:\test\testwc\targetdir\dir2
$ svn mv f:\test\testwc\currentdir\dir1 f:\test\testwc\targetdir\dir1

After running this script, you'll end up with the following folder 
structure in your working copy:

testwc\currentdir
testwc\targetdir
testwc\targetdir\dir1
testwc\targetdir\dir1\fileA
testwc\targetdir\dir1\dir1
testwc\targetdir\dir1\dir1\file1
testwc\targetdir\dir2
testwc\targetdir\dir2\file2

instead of (what most users expect) either an error message (that 
targetdir\dir1 already exists) or the following structure:
testwc\currentdir
testwc\targetdir
testwc\targetdir\dir1
testwc\targetdir\dir1\fileA
testwc\targetdir\dir1\file1
testwc\targetdir\dir2
testwc\targetdir\dir2\file2

All this tested with
svn, Version 1.1.1 (r11581)

Stefan

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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org