Subversion 1.8 brought several changes to the FSFS storage layer, and one of the results is smaller Subversion repository size in many situations.
The latest FSFS format will pack revision properties and use deltification for directories. It also eliminates duplicate storage of identical files and properties in a single revision. As usual you have a lot of control over which of these new features are used – just take a look in the fsfs.conf file in the repository’s db directory.
To get an idea of how much storage savings these changes might yield, I set up two new repositories, one with deltification enabled for directories and properties, and one with deltification turned off. I imported an identical set of source data into each repository, and the baseline repository size was about 18.4 KB. I then ran a script that set 1,000 properties on a directory, and 1,000 revision properties. (It may not seem terribly realistic, but recall that running a merge in Subversion writes the mergeinfo property on a directory.) After running this script on both repositories I measured the growth in disk space consumption:
The repository without deltification had grown to 39.6 KB.
The repository with deltification was at 26.4 KB.
That’s a pretty substantial relative savings – a 63% reduction in size. Over the life of a busy repository, delitification could save you a lot of disk space.
You may also see a performance boost from caching of revision properties. During a checkout, SVN may need to read thousands of revision property files, and now some portion of that data can be cached. If you combine revision property caching with revision property packing, you’ll see a nice speed up to commands like svn log.
Some of these improvements are available simply by running svnadmin upgrade on your repository, but to get the maximum benefit you should dump and reload the repository. If you want to give it a try, download the latest certified Subversion binaries.
Subversion is a registered trademark of the Apache Foundation.