Applies to: VisualSVN Server 3.4 and later
Subversion repository has several technical parameters and options that can affect repository size and performance. This information appears on the Details tab in the properties of a repository.
This article provides a brief summary of the main Subversion repository filesystem types, formats, and their options:
- Filesystem type
- Filesystem format
- Compression
- Revision sharding
- Repository packing
- Revision content addressing
Filesystem type
Subversion uses a pluggable model for virtual versioned filesystem types. VisualSVN Server supports repositories that use FSFS and VDFS filesystem types:
- FSFS filesystem type is a standard for Subversion repositories.
- VDFS filesystem type encapsulates FSFS repository filesystem and implements transparent data replication across different servers. Distributed VDFS repositories are functionally equivalent to regular Subversion FSFS repositories and enable data replication across geographically distributed sites.
For further information about repository filesystem types, please read the article KB80: Repository types available in VisualSVN Server.
Filesystem format
The filesystem format defines features and capabilities of the particular repository. Older filesystem formats are forward compatible and work with the latest versions of the VisualSVN Server. However, older formats do not support the capabilities introduced in newer Subversion releases.
FSFS filesystem format versions
The table below describes the differences between FSFS filesystem formats.
The filesystem formats available in FSFS repositories are specified in the table below.
FSFS format | Compatible with | Summary |
1 | Subversion 1.1+ VisualSVN Server 1.0+ |
The very first release of FSFS repository backend and the first FSFS filesystem format. |
2 | Subversion 1.4+ VisualSVN Server 1.0+ |
Introduced compression for the data stored in the repository. |
3 | Subversion 1.5+ VisualSVN Server 1.5+ |
Introduced the merge tracking and the sharded repository layout. |
4 | Subversion 1.6+ VisualSVN Server 1.7+ |
Introduced repository packing and representation sharing (i.e. data deduplication). |
6 | Subversion 1.8+ VisualSVN Server 2.6+ |
Extended the repository packing feature to also pack revision properties. |
7 | Subversion 1.9+ VisualSVN Server 3.4+ |
Introduced logical revision content addressing and several optional performance-related configuration options. |
8 | Subversion 1.10+ VisualSVN Server 3.9+ |
Introduced LZ4 compression. |
VDFS filesystem format versions
VDFS-backed repositories encapsulate FSFS repositories and therefore share the same filesystem formats. VDFS repository format is represented as the 3-digit value. For example, VDFS filesystem format 107 means that the repository is using VDFS filesystem type 1 and encapsulates FSFS filesystem format 7.
The filesystem formats available in VDFS repositories are specified in the table below.
VDFS format | Compatible with | Summary |
101 | VisualSVN Server 3.0+ | Format 1 is the first VDFS filesystem format version.
It is currently the only VDFS filesystem format. VDFS format version is represented as 3-digit value where the first digit specifies the version of VDFS format. Other digits specify the format of FSFS filesystem encapsulated in VDFS. |
102 | VisualSVN Server 3.0+ | |
103 | VisualSVN Server 3.0+ | |
104 | VisualSVN Server 3.0+ | |
106 | VisualSVN Server 3.0+ | |
107 | VisualSVN Server 3.4+ | |
108 | VisualSVN Server 3.9+ |
Compression
Historically, Subversion repositories supported only zlib compression. The filesystem format version 8 added support for LZ4 compression. LZ4 compression can provide a noticeable performance boost — especially when working with large binary files.
Repositories with filesystem format version 8 by default use LZ4 compression. Existing Subversion repositories require a format upgrade to allow using LZ4 compression. Read the article KB142: Upgrading the filesystem format of a repository learn more about upgrading the repository filesystem format.
You will see the following property on the Details tab for the repository that uses LZ4 compression:
Compression: lz4
You will see the following property on the Details tab for the repository that uses zlib compression:
Compression: zlib-5
There are 10 compression levels (zlib-0 .. zlib-9) and zlib-5 is the default level of compression.
Revision sharding
Revisions in the Subversion repositories are stored as individual files unless they were packed. By default, modern Subversion repositories use the sharded repository layout - the revision files are organized into subdirectories called shards. By default, every such subdirectory contains up to 1000 revision files, but the shard's size can be adjusted. Sharded repository layout optimizes FSFS filesystem efficiency for larger repositories.
You will see the following properties on the Details tab for a repository that is sharded by 1000 revisions in the VisualSVN Server Manager console:
Sharded: yes Shard size: 1000
Repository packing
The complete revision shards can be optionally concatenated into single pack files. This operation is usually referred to as packing and is performed manually by the server administrator. In some cases, revision packing may reduce storage overhead and therefore reduce the size of the repositories on disk. However, packing may also result in slight performance degradation in certain cases.
You will see the following property on the Details tab for the repository with 33010 revisions without packed shards:
Shards packed: 0/34
You will see the following property on the Details tab for the repository with 33010 revisions that has only 7 shards packed:
Shards packed: 7/34
For further information about repository packing in the VisualSVN Server, please read the SVNBook | Packing FSFS filesystems section.
Revision content addressing
There are two types of revision content addressing in Subversion repositories: physical addressing and logical addressing.
Physical addressing is a time-tested and robust approach to address the revision content in Subversion repositories. By default, VisualSVN Server creates new repositories with physical addressing.
For a repository that is using physical addressing, you will see the following property on the Details tab:
Logical Addressing: no
Logical addressing adds an extra translation layer for features to be implemented in future Subversion versions. Logical addressing was introduced in the FSFS filesystem format version 7.
For a repository that is using logical addressing, you will see the following property on the Details tab:
Logical Addressing: yes