A History of Version Control

Broadly speaking, the history of version control tools can be divided into three generations.[1]

Table 1.1. Three Generations of Version Control

GenerationNetworkingOperationsConcurrencyExamples
First NoneOne file at a timeLocksRCS, SCCS
Second CentralizedMulti-fileMerge
before
commit
CVS, SourceSafe,
Subversion,
Team Foundation Server
Third DistributedChangesetsCommit
before
merge
Bazaar,
Git,
Mercurial

The forty year history of version control tools shows a steady movement toward more concurrency.

As I write this in mid-2011, the world of version control is in a time of transition. The vast majority of professional programmers are using second generation tools but the third generation is growing very quickly in popularity. The most popular VCS on Earth is Apache Subversion[2], an open source second generation tool. The high-end of the commercial market is dominated by IBM and Microsoft, both of which are firmly entrenched in second generation tools. But at the community level, where developers around the world talk about what’s new and cool, the buzz is all about Distributed Version Control Systems (DVCS). The three most popular DVCS tools are Bazaar[3], Git[4] and Mercurial[5].



[1] http://www.catb.org/~esr/writings/version-control/version-control.html — I don’t remember for sure. I may have gotten this notion of three generations from Eric Raymond’s “Understanding Version-Control Systems”. Either way, it’s a good read.

[2] http://subversion.apache.org/ — The proper name is “Apache Subversion”, but in the interest of saving space, I'll be referring to it as simply “Subversion” throughout this book.