Published on 2008-09-29 by John Collins. Socials: YouTube - X - Spotify - Amazon Music - Apple Podcast |
I have been using the svn:externals feature of Subversion for many years now to handle the dependencies between my various projects. As everything I am working on these days has the Alpha Framework at its core, I set up my project repositories to reference the Alpha Framework repository as an svn:external, then when I checkout or export one of the child repositories, Subversion pulls down all of the source code from the Alpha repository too. It is a nice set-up but not without some problems, in particular when tagging or branching the child project where pinning the externals to a certain revision becomes a pain.
Recently I have upgraded my Subversion server to version 1.5.x (from 1.2.x!), which brings a number of new improvements to the svn:externals functionality:
"Relative URLs, peg revisions in svn:externals" - http://subversion.tigris.org/svn_1.5_releasenotes.html#externals
The pegging feature in particular looks interesting to me, but I need more time to play around with this before I can determine if it solves my problem with tagging and branching the child projects. I hope to write more about this soon in the form of a detailed tutorial on the subject.
Updated 2021 : note that the above post is from 2008, but is left here for archival purposes. The external link to subversion.tigris.org is now offline, so I have unlinked it. The Alpha Framework, along with the rest of my projects, have now moved to Git.