Hello, I've encountered a problem whilst using SVN and believe that it may be a bug. I've checked in the issue tracker and can't find anything similar so I just wanted to check with you that this is not intended behaviour and/or already reported/fixed.
I encountered problems when trying to merge changes to files contained within a directory with a dollar sign ($) in the name. The svn merge command fails and returns a 'Skipped Missing Target' error message. I tried to create the simplest reproduction recipe that I could and it is attached below (svncommands). I copied and pasted straight from PuTTY and then broke it up and added a few comments with # markers. The problem occurs at the bottom of the file. I've run it on a couple of our linux servers and the same problem happens on both. I don't know much about subversion and so can't give you many details of the setup but I've copied and pasted the info from running svn -version into the two server attachments below. I'm told by a colleague that they both run repository format 3, we have made no private modifications to Subversion and he doesn't think we run Berkely DB but isn't sure. If you have any questions I will do my best to answer them. Thanks, Ben
[apache@testsvn1 ] ~> svn --version svn, version 1.5.6 (r36142) compiled Feb 26 2009, 22:41:36 Copyright (C) 2000-2008 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository access (RA) modules are available: * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. - handles 'http' scheme - handles 'https' scheme * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - handles 'http' scheme - handles 'https' scheme
[apache@edinsvn3 ] ~> svn --version svn, version 1.6.13 (r1002816) compiled Oct 4 2010, 17:34:17 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository access (RA) modules are available: * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. - handles 'http' scheme - handles 'https' scheme * ra_svn : Module for accessing a repository using the svn network protocol. - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - handles 'http' scheme - handles 'https' scheme
login as: apache apache@testsvn's password: Last login: Wed Aug 10 16:40:28 2011 from pc3993.datcon.co.uk # 1. Create a directory to work in and a repository [apache@testsvn1 ] ~> mkdir mydir [apache@testsvn1 ] ~> mkdir mydir/all [apache@testsvn1 ] ~> mkdir mydir/trunkco [apache@testsvn1 ] ~> mkdir mydir/branchco [apache@testsvn1 ] ~> mkdir mydir/repos [apache@testsvn1 ] ~> svnadmin create /svn/mydir/repos/project # 2. Check out a working copy of the repository [apache@testsvn1 ] ~> cd mydir/all [apache@testsvn1 ] ~/mydir/all> svn checkout file:///svn/mydir/repos/project Checked out revision 0. # 3. Add trunk and branch folders to the working copy of the repository and add folder dollar$folderin trunk then create an example file within this folder [apache@testsvn1 ] ~/mydir/all> mkdir project/branches [apache@testsvn1 ] ~/mydir/all> mkdir project/branches/mybranch [apache@testsvn1 ] ~/mydir/all> mkdir project/trunk [apache@testsvn1 ] ~/mydir/all> mkdir project/trunk/dollar\$folder [apache@testsvn1 ] ~/mydir/all> touch project/trunk/dollar\$folder/example.txt # 4. Commit the changes of the repository [apache@testsvn1 ] ~/mydir/all> cd ~/mydir [apache@testsvn1 ] ~/mydir> svn add all/project/branches A all/project/branches A all/project/branches/mybranch [apache@testsvn1 ] ~/mydir> svn add all/project/trunk A all/project/trunk A all/project/trunk/dollar$folder A all/project/trunk/dollar$folder/example.txt [apache@testsvn1 ] ~/mydir> svn commit -m "added branch and trunk folders" all/project Adding all/project/branches Adding all/project/branches/mybranch Adding all/project/trunk Adding all/project/trunk/dollar$folder Adding all/project/trunk/dollar$folder/example.txt Transmitting file data . Committed revision 1. # 5. Create a branch of the trunk [apache@testsvn1 ] ~/mydir> svn copy -m "create a branch" file:///svn/mydir/repos/project/trunk file:///svn/mydir/repos/project/branches/mybranch Committed revision 2. # 6. Checkout the branch into the working directory [apache@testsvn1 ] ~/mydir> cd branchco [apache@testsvn1 ] ~/mydir/branchco> svn checkout file:///svn/mydir/repos/project/branches/mybranch A mybranch/trunk A mybranch/trunk/dollar$folder A mybranch/trunk/dollar$folder/example.txt Checked out revision 2. # 7. Checkout trunk to the working directory, modify the file # within dollar$folder and commit the changes to the repository [apache@testsvn1 ] ~/mydir/branchco> cd ~/mydir/trunkco [apache@testsvn1 ] ~/mydir/trunkco> svn checkout file:///svn/mydir/repos/project/trunk A trunk/dollar$folder A trunk/dollar$folder/example.txt Checked out revision 2. [apache@testsvn1 ] ~/mydir/trunkco> cd trunk/dollar\$folder [apache@testsvn1 ] ~/mydir/trunkco/trunk/dollar$folder> vi example.txt # add some text to the file using vi [apache@testsvn1 ] ~/mydir/trunkco/trunk/dollar$folder> svn commit -m "added text to example file" ~/mydir/trunkco/trunk Sending dollar$folder/example.txt Transmitting file data . Committed revision 3. # 8. Try and merge the changes of the trunk into the checked out branch [apache@testsvn1 ] ~/mydir/trunkco/trunk/dollar$folder> cd ~/mydir/branchco/mybranch [apache@testsvn1 ] ~/mydir/branchco/mybranch> svn merge file:///svn/mydir/repos/project/trunk Skipped missing target: 'dollar$folder/example.txt' # ERROR! Skipped missing target: 'dollar$folder' # ERROR! [apache@testsvn1 ] ~/mydir/branchco/mybranch>