Reputation: 98
I have a Subversion repository called 'repo'. Inside of repo are trunk/ and branches/ directories. Within branches/ there are several dozen release branches, e.g. 1.0/, 1.1/. These branches/ directories contain a relatively large application.
I want to add an external at the root of repo, called 'myExternal'. When I define the external, the only way to get SVN to create the myExternal/ directory is to run 'svn up' from the root of repo. However, this will also cause the entire contents of branches/ to be checked out, which is unacceptable (we have many developers that need to get myExternal/ added to their copy of repo, and can't have all of them checking out gigabytes of unneeded branches).
I've tried 'svn up --set-depth immediates', but that doesn't seem to get the externals. Is there any way to tell svn to fetch myExternal/ without fetching all of branches/ ?
Using SVN 1.7.
Upvotes: 7
Views: 2941
Reputation: 2161
Externals are just svn checkouts so you can check them out manually.
You could also use a command like this. You may have to modify it a bit if your externals are in a different format.
svn propget svn:externals | awk '{print $2, $1}' | xargs -L1 svn co
Upvotes: 6
Reputation: 11007
Yes, that is the known issue of subversion externals are not created unless depth=infinity.
I think there is no way as to redesign your directory structure so that myExternal is attached not to the repo but to its subfolders, e.g. set on /trunk and every folder in /branches.
Or you can create a script that at first fetches immediates of repo and then fetches externals set on repo (which it may get by reading properties of repo: svn propget svn:externals).
Upvotes: 4