Apache Subversion (SVN) 1.9 was released last week. The official release notes can be found from Apache's site, but I will cover the essential below. Subversion 1.9 contains improvements to the Subversion FSFS filesystem format, a new experimental filesystem format called FSX, as well as smaller enhancements and bug fixes.
If you are new to Subversion (SVN) and would like to learn the basic concepts, check out our SVN tutorial.
Subversion 1.9 promises to reduce the overall I/O. This is accomplished with low-level optimizations such as reorganizing revision data when using
svnadmin pack and adding caching to block level reads. Because of packing the repository is now a recommended action to be done in regular intervals, another enhancement is allowing commits while repository packing is running. This will also remove the need for maintenance windows, which is a more than welcome addition.
In order to enjoy the benefits of FSFS Improvements 1.9 brings to your repositories,
svnadmin upgrade that is typically used, is not enough. What you need to do is to dump and load the repository, as well as run
svnadmin pack in regular intervals in order to enjoy all the benefits. Dump and load still require a downtime, so this should be taken into account when planning an upgrade.
FSX, A new experimental repository backend
The FSFS filesystem format has been around for 10 years already and FSX has been designed to replace it eventually. FSX promises better performance and storage, versioned revision properties, partitionable storage as well as arbitrary metadata storage and indexing facilities. However in Subversion 1.9, FSX is NOT production ready, and no compatibility between the FSX in 1.9 and future releases is guaranteed.
For Subversion client there's a new subcommand,
svn auth, that can be used to view or remove authentication credentials from the supported password caches. Improvements have been also made to
svn info and
svn propget to allow better usage through scripts. Another improvement for script based usage is the ability to trust a server when using HTTPS, even though the certificate check failed. This can be useful when working with self-signed or expired certificates.
Tag handling, when using svn:externals, is improved by allowing
svn copy command to pin the revisions of svn:externals so that they stay the same when the code is checked out. Pinning only works for one level, so if the externals are referencing other externals, revisions are not pinned.
svn cleanup now supports externals, as well as offers switches to remove unversioned and ignored files from the working copy. The interactive conflict resolver also now tries to use an external merge tool but falls back on the internal one.
On the server side, committing large merges has been made more efficient, through allowing the editing of svn:mergeinfo properties for old revisions, if the directory contents did not change. This will help projects that have lots of contributors, branches, and merges.
As another enhancement,
svnserve can now limit the number of threads it uses. This makes it possible to limit the resource consumption of a server.
svnadmin verify command now terminates immediately after a problem has been found. You can disable the termination with an option switch, however.
svn-bench has been renamed to
Also, a prospective blame has been added as a new functionality. Prospective blame allows you to look not only at the last change but also for the next change, in a given line. This enhancement enables more efficient debugging of bugs.
Subversion 1.9 offers a good set of new features, especially from the I/O point of view. The upgrade of repositories, unfortunately, needs downtime if all the performance improvements are going to be taken into use. Another thing to solve for subversion administrators is the need to schedule
svnadmin pack operations in regular intervals for repositories.
Deveo offers Subversion (SVN) hosting with no user or repository limits and SVN server that you can setup and run on your own hardware. We have not yet scheduled an upgrade to Subversion 1.9 but will do so in the future. We are also looking forward to the FSX filesystem format to become stable. Let us know of your experiences in running Subversion 1.9 in production, or contact us if you wish to know more how Deveo helps the management of Subversion repositories.