Page 1 of 5Subversion is a powerful advancement on the CVS program, popular for many projects. This document covers the history, the theory and practical examples of how to use Subversion to manage changes and releases of software products.
What is Subversion?
Subversion is a revision control system, typically deployed as a source control management system. Subversion supports access to repositories via HTTP/HTTPS, SSH and a native SVN protocol. Subversion builds on previous revision control systems (such as the original RCS and CVS) to provide a feature rich system for storing revisions.
Subversion is presently a rather mature product and is being offered by large open source repository systems in place of previously CVS based repositories. Examples of this are SourceForge, Google Project Hosting and JoomlaCode.
Alternatives to Subversion
Historically CVS has been the dominant open source version control management system but it has had its failing and is now being less commonly used. Other version control options available are:
* Monotone (Wikipedia)
Monotone follows a similar design to Git, Mercurial or Archs in providing distributed version control. A strong advantage is the more 'peer to peer' approach where each client can act as a 'server' as opposed to Subversion's more rigid approach. To support this Monotone uses certificates to validate commit identities to ensure author validity. Monotone however doesn't have as much GUI support (e.g. no tool such as TortoiseSVN) and isn't as mature a product. For highly distributed development environments where authentication is important, Monotone would be preferable.
Git was developed by Linus for kernel usage after a fallout with the previous kernel SCM 'Bitkeeper'. Linus wanted something that didn't take the traditional approach to version control and in some ways this makes it more difficult (and CPU intensive) than other alternatives. Where SVN is strongly client-server, Git is aimed strongly at being in a heavily distributed environment. Of a similar design, purpose and origin to Git is [http://en.wikipedia.org/wiki/Mercurial_%28software%29 Mercurial].
SVK is an offshoot and extension of 'SVN' allowing for easy distribution such as the case of the other mentioned SCM's. SVK adds such abilities as offline operations (e.g. offline commit), mirroring and distributed branching. As with the rest, this product is aimed more at distributed development as opposed to a more centralized development model or development with a small set of contributors.
Wikipedia has a list of revision control software as well as a more in depth comparison.