Broadly speaking, the history of version control tools can be divided into three generations.[1]
The forty year history of version control tools shows a steady movement toward more concurrency.
In first generation tools, concurrent development was handled solely with locks. Only one person could be working on a file at a time.
The second generation tools are a fair bit more permissive about simultaneous modifications, with one notable restriction. Users must merge the current revisions into their work before they are allowed to commit.
The third generation tools allow merge and commit to be separated.
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.