Subversion Version Control System

Version Control SystemSubversion Version Control System is a redo of CVS Version Control System. It is a better version of CVS.

Subversion (SVN) is a new system, intending to be a simple replacement of CVS. I looked at Subversion 1.0, released February 24, 2004. Subversion is basically a re-implementation of CVS with its warts fixed, and it still works the same basic way (supporting a centralized repository). Like CVS, subversion by itself is intended to support a centralized repository for developers and doesn’t handle decentralized development well; the svk project extends subversion to support decentralized development.

Source: David A. Wheeler essay

Most of the developers working on CVS actually worked on Subversion. Thus it keeps the basic functionalities but with better features.

There were several attempts to rescue the CVS codebase and its basic architecture beginning in the late 1990s: Meta-CVS, and CVSNT were the best known. All of these failed, neither solving CVS’s architectural problems in a convincing way nor achieving significant mind-share among developers. A new approach was needed.

In 2000, a group including some former CVS core developers launched Subversion, a project explicitly intended to improve on and supersede CVS. Subversion is also known as SVN, after the directory name its repositories conventionally use. While their first official production release did not arrive till 2004, betas from about 2002 onward were usable; in fact, it became clear the project was going to succeed at its major goals well before the 1.0 version shipped.

In a move that proved politically very shrewd, Subversion did its best to hide its differences from CVS; its command-line interface is so close to CVS’s that a CVS user can utter basic commands with confidence within minutes of hearing SVN explained or reading a cheat sheet.

Relatedly, one of the effects of Subversion was to reform and to some extent standardize version-control jargon, as well the style of command-line interfaces. In this they built on, extended, and cleaned up CVS terminology.

Despite certain serious weaknesses which we’ll examine later in the Comparisons section, SVN’s combination of interface conservatism and innovation under the hood proved to be exactly what dissatisfied CVS users needed. The Subversion developers played their hand well, largely avoiding serious blunders or bugs. As a result, 2003 to 2007 saw a large-scale migration from CVS to SVN and the effective death of all other CVS alternatives. At time of writing in early 2008 there are actually more active SVN than CVS projects, and it is generally understood that CVS’s days are numbered.

However, in the longer term so are Subversion’s. It is clearly the best of the centralized VCSes, but just as clearly the last of its kind. As dispersed, Internet-mediated software development becomes the norm rather than the exception, the centralized model of version control is running out of steam as visibly as the file-centric one did with CVS in the 1990s.

Source: Eric Raymond

By far, Subversion is the most widely used Version Control System. It fixed a lot of CVS flaws and still keeps the basic familiarity. Making it very easy to migrate from CVS to Subversion Version Control System. And because CVS is easy to use, so is Subversion for new users to Version Control System.

However, its centralized nature is showing its age. A new Version Control System generation is coming. One that is de-centralized.

But, I am personally still using Subversion until today after switching from CVS. I have to say, the switch is rather painless and easy because they use the same command line functions. And GUI tools are similar to old CVS system.

What is your experience with Subversion ? Did you make the switch from CVS also ? Share with us in the comment section below.