Recently, branch support for Subversion was added to externals.
Subversion does not have a branch feature. Instead, subversion users use the copy feature to copy directories within the repository (branch), a switch command to switch the URL that the working directory points at (checkout), and a merge feature to merge directories (merge).
ext handles branches in Subversion by splitting the URL given by ‘svn info’ into a repository part and a branch part.
If you find yourself doing this:
ext checkout svn+ssh://someserver/somepath/repository/branches/new_feature
Then you almost certainly mean to do this:
ext checkout svn+ssh://someserver/somepath/repository -b branches/new_feature
For ext to use branch-related features with Subversion repositories, the repository must be known. For subprojects this is never a problem, but for the main project, it’s important that there is a repository field under [.] in the .externals file. This can be accomplished by using -b with commands like ‘ext checkout’ and ‘ext init’ or by manually editing the .externals file.
For example, if you are working on svn+ssh://someserver/somepath/repository/current then you want your .externals file to look like this:
[.] scm = svn repository = svn+ssh://someserver/somepath/repository
Notice how I left off “/current” from the repository URL. “current” is the branch and not part of the repository from ext’s perspective.