Version Control Systems

Version Control Systems

From Consultancy.EdVoncken.NET

Jump to: navigation, search

Over the years, Version Control Systems have evolved from Single-Computer tools to massively Distributed Version Control Systems.

Contents

First Generation: Single-computer Version Control Systems

RCS - Revision Control System

This is an old version control system, used mainly for managing single files. It was intended to help a single user to manage revisions of a single file.

RCS does not support working with projects (sets of files) or directory versioning, which can be a problem.

On Unix systems, I still use it to locally manage individual configuration files.

Second Generation: Network-centric Version Control Systems

Most popular Version Control Systems use a Client/Server architecture, with a central repository.

CVS - Concurrent Versions System

CVS was built on top of RCS, with a centralized repository consisting of RCS files. CVS adds a Client/Server architecture, offering a centralized repository.

Several users can work on the same project by creating their own working copy of the CVS repository. This process is called "check out". Like RCS, CVS does not offer directory or symlink versioning.

CVS is still very popular with Open Source projects, but lately it is being superseded by newer VCS's like Subversion.

SVN - Subversion

Subversion was developed by the CVS team as a successor to CVS.

Third Generation: Distributed Version Control Systems

The need for a centralized repository is unattractive in some scenarios (like Internet-scale distributed development). New tools have been developed that no longer need a centralized repository as with the client/server model, but rely on a peer-to-peer model.

Git

Originally developed by Linus Torvalds as a quick hack, Git is now used by many Open Source projects.

Hg - Mercurial