Skip to main content

JavaOne 2008 - Subversion 1.5 is coming!

Posted by johnsmart on May 6, 2008 at 6:55 PM PDT

This morning, I went to a talk by some of the CollabNet guys on the now-imminent release of Subversion 1.5. I've talked about some of the main new features, notably the new merge tracking capabilities, elsewhere, so I won't rehash them here. However, there were a few other interesting new features that are worth mentioning.

To have a truly robust enterprise Subversion archtecture, you need some kind of replication. Backup servers in case your main repository dies a violent death.

Another big reason to have some kind of replicated architecture is for performance. If some of your users are geographically a long way from the main repository, access times can be much slower than for a server that is physically closer.

In Subversion 1.5, if you are running Subversion through Apache, you can at least address the second issue very easily. By using a feature called "Write-through proxying", you can set up a master Apache repository in one location, and a series of Apache slave servers distributed across your sites. The slave servers are basically read-only copies of the master repository. Any read-only requests (such as "svn update") will stop at the nearest slave server. Read-write requests (such as "svn commit") are transparently passed on to the master server. The master server takes care of updating the slave servers automatically using the svn_sync tool.

Setting this up isn't too complicated. You need to configure the Apache slaves using a special directive to point to the master server, and also configure them to accept updates from (and only from) the master server. Then you set up replication from the master to the slaves using svn_sync.

Note that for this to work, you need to be running Subversion 1.5 with Apache 2.2 with mod_proxy - you can't do it with svnserve.

This is a good solution for improving performance, and a partial solution for server redundency. For example, if the master server fails for some reason, no one will be able to commit their changes, but updates still will be possible.

Related Topics >>