I have a Subversion repository that contains some client files. Some clients will use the standard files, but other clients will provide custom versions of the files. To accommodate this, I've used svn:externals for the clients that will use the shared files. So our structure is something like this:
svn
|+ top
|+ shared
|+ clients
|+ custom1
|+ custom2
|+ shared1
|+ shared2
The client "custom1" is a real folder in Subversion containing that client's customized files, and the client "shared1" is an svn:external property on the /clients
folder which points to /top/shared
.
What I was hoping for was that when I want to deploy a new client, I could simply export their folder to the server, using a command like:
svn export http://svn/top/clients/custom1 \\server\custom1
or
svn export http://svn/top/clients/shared1 \\server\shared1
This works fine for the customized clients because they have a "real" folder in Svn, but for the clients configured with externals, I get an error:
svn: E170000: URL 'http://svn/top/clients/shared1' doesn't exist
Is there a way that I can check out/export an "external" folder directly?
http://svn/top/clients/shared1
is not a physical path in SVN but just a reference to your external. So, that is the reason you are not able to check out that directly.
To get rid of this, you can create http://svn/top/clients/shared1
as an empty folder in SVN and you can give the svn:external property on the http://svn/top/clients/shared1
folder to mke it point to /top/shared
instead of /clients
folder.
Then your check out will get a physical path to check out but you don't need to keep your actual content under this folder.