Origins of Subversion
The Subversion project was initiated by CollabNet in 2000. The goal was to create a new version control system to replace CVS, with some bugs fixed and some features added.
Selected Features (from Wikipedia)
- The system maintains versioning for directories, renames, and file metadata (but not for timestamps). Users can move and/or copy entire directory-trees very quickly, while retaining full revision history.
- Versioning of symbolic links.
- Native support for binary files, with space-efficient binary-diff storage.
- Branching as a cheap operation, independent of file size (though Subversion itself does not distinguish between a branch and a directory)
- Natively client–server, layered library design.
- Client/server protocol sends diffs in both directions.
- Costs proportional to change size, not to data size.
- Path-based authorization.
- Language bindings for C#, PHP, Python, Perl, Ruby, and Java.
Subversion is a centralized system. This is good for a centralized situation. Build teams and product leaders are confident that your code is available as soon as you check it in.
It can scale well. If one server is not powerful enough or if you have developers on multiple continents, you can have a central read/write server with multiple quasi-read-write servers. They send the “write” messages back to the central server. This is fine for most deployments because there are many more read than write transactions.
Before this server architecture was available, I once set up a deployment with one server in England, where part of the development was done, and another server in Canada, where the main team was. The code was split by project into approximately 20 repositories. Each repository was read-only in one site and read/write in the other. Nightly cron jobs synchronized the read-only repositories before the nightly builds.
Support for Subversion
- has attracted numerous GUI interfaces
- runs on many OSes
- integrated into many IDE’s and editors
Main Subversion web pages
- http://svnbook.red-bean.com/ – “Version Control with Subversion” – best source for users and administrators!
GUI tools for Subversion
There are several GUI tools for interfacing with Subversion, including one for the iPhone, and integration for most IDE’s. See: