When examining the root directory of a Subversion (SVN) repository on the server side, you'll find two critical version indicator files:
/
├── format
└── db/
└── format
The root-level format
file (containing "5" in your case) indicates the overall repository format version. This number represents the compatibility version of the entire repository structure.
Key versions in SVN history:
1 - Initial format
2 - Introduced transactional commits (SVN 0.33)
3 - Added repository UUIDs (SVN 0.41)
4 - Changed rev/revprop storage (SVN 0.45)
5 - FSFS format (SVN 1.1+)
The db/format
file (showing "2" in your environment) specifies the format version of the specific database backend storage system. This version is independent of the repository format and may change more frequently.
Common db/format versions:
1 - Original FSFS format
2 - Improved FSFS format with smaller directories (SVN 1.5+)
3 - Packed revprops storage (SVN 1.6+)
4 - L2P index (SVN 1.9+)
When you run svnadmin create
, it generates both files with appropriate version numbers. Here's how to check them programmatically:
# Bash script to check format versions
REPO_PATH="/path/to/your/repo"
echo "Repository format: $(cat $REPO_PATH/format)"
echo "DB format: $(cat $REPO_PATH/db/format)"
SVN provides tools to upgrade repositories when needed. The upgrade process affects both files:
# Upgrade command example
svnadmin upgrade /path/to/repository
# Verify upgrade
svnadmin verify /path/to/repository
Note that while format version 5 has been stable for years, the db/format version may increment with new SVN releases to support improved storage mechanisms.
Client-server compatibility is primarily determined by the root format version. Modern SVN clients (1.8+) will work with format 5 repositories, while older clients might need upgrades.
Database format changes are backward compatible - newer SVN versions can read older db formats, but may automatically upgrade them during write operations.
When working with Subversion (SVN) repositories, you'll encounter two critical version indicator files:
format
db/format
These files serve different purposes in the repository's architecture, and their version numbers (like 5 and 2 in your case) represent different aspects of the repository format.
The top-level format
file indicates the overall repository format version. Current SVN repositories typically show:
5
This version number corresponds to:
- FSFS filesystem backend (as opposed to older Berkeley DB)
- Repository layout compatibility
- Minimum required SVN client version
The db/format
file specifies the version of the repository's database storage format. You'll commonly see:
2
This indicates:
- FSFS filesystem format version
- Internal storage structure version
- On-disk representation format
These version numbers become important when:
# Checking repository compatibility
$ svnadmin verify /path/to/repository
# Upgrading repositories
$ svnadmin upgrade /path/to/repository
The format
version (5) is what triggers the need for repository upgrades when using newer SVN versions. The db/format
version (2) typically remains stable across SVN releases.
SVN Version | format | db/format |
---|---|---|
1.4 | 3 | 1 |
1.5 | 4 | 1 |
1.6+ | 5 | 2 |
You'll need to pay attention to these versions when:
- Migrating repositories between servers
- Performing repository upgrades
- Troubleshooting repository corruption
- Setting up repository hooks that depend on specific formats
For most developers, these version numbers simply confirm they're working with a modern repository format, but understanding the difference helps when dealing with repository administration tasks.