I was inspired by the guys over at beanstalkapp to look at the way the RubyForge virtual hosts handle svn+http. Here's the old way:
Pretty straightforward, but since all the virtual hosts have pretty much the same directives, here's the new way:
Much more concise! All of the duplicated stuff got moved up into a global Location directive and only the host-specific stuff remains. This makes each of the virtual hosts that include svn+http support about a third smaller, which means faster Apache restarts and all around goodness.
The downside is that now all virtual hosts include a
/svn URL - it's there even if that project only uses git or cvs. Kind of clonky. It'd also be nice to get rid of
SVNPath, but unfortunately I think the way we have
/svn hanging off the root of the virtual host prevents that.
One day I should look at
mod_vhost_alias. 99% of the RubyForge virtual hosts are exactly the same less the project name. Seems like it should be possible to refactor away almost all of them.