Learning about Subversion

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

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:


2 responses to “Learning about Subversion

  1. Hey,
    Subversion is an interesting cvs replacement but it lost compatibility with the RCS system. Because the rcs system is available in different ools such as cvs and mks-si I tend to stay in that family group as it allows me to use different levels of complexity in the tools I use for different project depending on QA requirements. Altough I have used subversion as well in cases where it’s unique set of features makes it more desireable.
    As with all tools figuring out which one fulfills the requirements for the job and using the right tool is always an advantage.

  2. Your need to look at all the contro systems and find one that will adapt to you and what you need.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s