Remember the standard structure of Subversion repositories? The one that you create with mkdir project/{trunk,tags,branches}
? I now figured why people create so few branches and tags in this configuration. Because they checkout at project/trunk
level and not at project
level by fear of getting essentially the same code multiple times. And if you are at project/trunk
, you can't really work with project/branches
or project/tags
easily.
But there's a solution! Use the --depth and --set-depth options to svn checkout
and svn update
commands. For instance, when checking out a repository, do it in two steps. First, checkout only the {trunk, tags, branches}
folders, but nothing below them:
svn co --depth immediates http://example.com/svn/project
then, change to project/trunk and get the rest of the codebase from trunk:
cd project/trunk
svn up --set-depth infinity
See how it helps? You can now cherry-pick only the branches you want. And get rid of them by setting depth back to immediates