History of Version Control Systems: Part 3
Part I: First-generation
Part II: Client/Server
Part III: Distributed
My hatred of CVS means that I see SVN as the most pointless project ever started. — Linus Torvalds, creator of the Linux Kernel and Git
The third generation of VCS was distributed. It's best to describe it through the story of Git.
Larry McVoy had worked on a VCS called Sun WorkShop TeamWare in the 90s. TeamWare mirrored many of the features of Subversion and Perforce but built on SCCS. In 1998, McVoy saw the issues with the growing development of the Linux Kernel, which was now seven years old and involved thousands of developers.
In 2000, McVoy started a company called BitMover to solve these issues. BitMover published BitKeeper, a proprietary version control system, which offered a community version that was free for open-source developers.
In 2002, the Linux kernel started using BitKeeper as its VCS.
However, a developer (who went on to create rsync
) who worked for the Open Source Development Labs (OSDL) (the precursor to the Linux Foundation), reverse-engineered the BitKeeper protocol, bypassing the license requirements for proprietary features. As a response, BitKeeper revoked the licenses associated with the OSDL, which effectively removed the free license for the Linux Kernel.
Linus Torvalds, the benevolent dictator of the Linux kernel, decided that he would write his own VCS. git
was born. git
had some notable properties not found in other VCS.
It cloned the entire history locally. This meant no file locking and quick operations that weren't limited by the network. While it could generate and apply patches, its storage model kept full versions of each file change. This made for quick branching and quick checkouts. There were no complicated patch algebras needed – checking out a revision meant just finding the set of SHA-addressed files that correspond to it. Finally, git
tracked changesets in a DAG (directed acyclic graph), which made for more correct but complicated branching and merging.
Finally, git
had the full marketing power of Linus and Linux behind it. It's a powerful sell to have your VCS used by the world's largest open-source project (with free feature updates and bug fixes from the world's best developers).
One of my favorite talks is Linus Torvalds's talk about git
at Google in 2007. You can watch the video here.