Revision control

Updated: 10/30/2017 by Computer Hope

In the software development process, revision control, also known as version control or source control, is the management of changes made over time. These changes can be to source code, project assets, or any other information that goes into the finished product. It permits many people to work on the same parts of a project without worrying that their changes will overwrite the work of anyone else. The collection of revisions and their metadata is called a repository or repo. The repository represents a step-by-step chronological record of every change made to help project managers revert all or part of the project to a previous state if necessary.

How revisions are made

Revision control systems are usually hosted on a networked server. After the repository has been set up, using it generally involves the following steps:

  1. If the developer has created a new file that should become part of the project, the file must be added to the repository. The file is uploaded to the repository, and anyone else working on the project can see and use the file.
  2. If the developer wants to edit a file that is already part of the project, the file must be checked out. The act of checking out downloads the desired revision of the file to the developer's local version of the project. Usually, the revision that a developer wants to edit is the most recent revision: this revision is known as the "head".
  3. After the developer edits the file locally and is ready to add it to the official version of the project, the file can be checked in. This action is also known as making a commit. The developer is asked to write a brief summary of what changes were made and why. These comments, along with the updated version of the file, are uploaded to the repository.
  4. If someone else has checked in revisions to the same file since the last time the developer checked it out, the system announces that there are conflicts. It calculates the differences line-by-line, and the developers who made the changes must agree upon how their individual changes should be merged. The merging is usually done manually: the developers compare the conflicting versions and decide how to resolve them into one document.
  5. If there are no conflicts, the new version is updated in the repository, and the entire project receives a new revision number, permanently and uniquely identifying its current state.

Branching the development tree

Experimental changes are often made to the main version of a software project. Using revision control, these changes can be made to a separate copy of the project without interfering with development of the main version. The terminology for this approach uses the metaphor of a tree: the main version of the project is called the trunk, and experimental versions are known as branches.

Centralized vs. distributed systems

If a revision control systems uses a centralized repository, its data is contained in a single database that contains the authoritative version of all project files. Other systems employ a distributed model. In these systems, changes can be checked in to any project repository and the repositories synchronize the changes with each other.

List of revision control software

Software Title Summary Website
Aegis Used for test-driven development (TDD). Every change is required to include one or more tests that are shown to fail when executed against the currently checked-in code, and to pass when executed against the newly changed code. Operates on top of a separate revision control system, usually RCS or SCSS. Free, open-source, and licensed under the GPL. Aegis
ArX A distributed revision control system that began as a fork of GNU Arch. Primarily developed between 2003 and 2005. ArX
Autodesk Vault A specialized revision control system for various Autodesk CAD software products including Autodesk Inventor Professional, AutoCAD Mechanical, AutoCAD Electrical, and Autodesk Revit. Allows designers to re-use previous designs rather than starting from scratch, and to access complicated 3D schematics from any point in their design process. Autodesk Vault
Bazaar A distributed revision control system also known as GNU Bazaar. Its development is sponsored by Canonical, who also develops the Ubuntu Linux distribution. Runs on Linux, OS X, and Windows. Facilitates working with repositories from other systems such as CVS, Subversion, Git, Mercurial, Darcs, and Perforce. Free software, open source, and part of the GNU project. Bazaar
BitKeeper Proprietary software, used to manage development of the Linux kernel from 2002 through 2005. Available for many operating systems including AIX, BSD, HP-UX, IRIX, Solaris, Linux, and Microsoft Windows. BitKeeper
Code Co-op A revision control system that uses peer-to-peer communications to synchronize and control revisions, rather than a centralized server. Supports commits by e-mail. Runs on Microsoft Windows. Code Co-op
Concurrent Versions System First developed in 1986, CVS is a venerable and influential revision control system, last updated in 2008. While still used for smaller projects, CVS lacks many of the characteristics of modern revision control that are crucial for large-scale professional software development. Variants of CVS include CVSNT, which supports case-insensitive file names, and OpenCVS that uses stronger security methods. Concurrent Versions System
Darcs A distributed system written and heavily influenced by the Haskell programming language. Supports commits via e-mail. Operates on Unix, Linux, BSD, OS X, and Microsoft Windows systems. Open source, and licensed under the GPL. Darcs
DCVS A distributed version of CVS, also known as the Distributed Concurrent Versions System. Last actively developed in 2006. DCVS
Fossil A comprehensive management system comprising distributed revision control, bug tracking, and collaborative wiki software. Includes a browser-based interface as well as command-line tools. Operates on Linux, BSD, OS X, and Windows. Free, open source, and released under a BSD software license. Fossil
Git A distributed revision control system designed and first implemented by Linus Torvalds for use in the development of the Linux kernel. First released in 2005, Git is now the most widely-used version control system in the world. The software is free, open source, and released under the GPL. Git
GNU Arch A distributed revision control system developed as part of the GNU Free Software Project. It is still in use, but development has been limited to security fixes. It has largely been supplanted by GNU Bazaar. GNU Arch
IBM Rational ClearCase A family of software tools developed by IBM that includes software configuration management and revision control. It supports two models of project management: unified change management (UCM), and a model called "Base ClearCase" that allows greater configuration for an organization's specific needs. It runs on AIX, HP-UX, Linux, zLinux, Solaris, z/OS, and Microsoft Windows. IBM Rational ClearCase
IBM Rational Team Concert An Agile application lifecycle management (ALM) solution from IBM. Focuses on giving high-level visibility into project activities and the progress of individual teams, in accordance with Agile development methods. IBM Rational Team Concert
IC Manage A commercial design data management software system that provides revision control and bug tracking. Used primarily for industrial design projects such as the manufacture of NVidia GPUs. IC Manage
LibreSource A collaborative software development management system specifically designed for free software projects, groupware, community interaction, electronic archiving and web publishing. It is cross-platform and runs on Java. LibreSource
Mercurial A distributed revision control system developed as an open source replacement for BitKeeper. Runs on Linux, BSD, OS X, and Windows. Mercurial
Monotone A peer-to-peer revision control system similar to GNU Arch, Subversion, Git, and Mercurial. Runs on Unix, Linux, BSD, OS X, and Windows. Free, open source, and licensed under the GPL. Monotone
PTC Integrity A software system lifecycle management (SSLM) system formerly known as MKS Integrity. Provides a collaborative environment, primarily for engineering organizations. It and facilitates revision control, requirements management, engineering change management, build management, test management and software deployment. Runs on any platform that supports Java. PTC Integrity
Perforce A proprietary, commercial revision control system consisting of a master database and a central repository. Supports Git clients as well as its own. Plugins are available for integration with Eclipse, Visual Studio, and IntelliJ IDEA. Perforce
Plastic SCM A proprietary, commercial revision control tool that offers custom GUI management clients and integration with Eclipse, Visual Studio, and IntelliJ IDEA. Runs on Linux, OS X, and Microsoft Windows. Plastic SCM
PVCS A revision control system for Windows, Linux, and BSD systems, also known as Polytron Version Control System or PVCS Version Manager. Supports "parallel histories" that allow multiple users to edit the same file without needing to merge the changes at commit time. PVCS
Quma Version Control System A revision control system also known as QVCS, originally developed for the Amiga in 1998. Today, it runs on Microsoft Windows, OS X, and Solaris. Its codebase is written in Java.  
RCS A venerable and influential system first developed in 1982, also known as the original Revision Control System. RCS
SCCS An early revision control system, also known as Source Code Control System. Developed in the SNOBOL language at Bell Labs in 1972, later re-written in C for UNIX. Most modern version of UNIX still include a version of SCCS. SCCS
SolidWorks Enterprise PDM A data management system that provides its own API for maximum configurability via custom code. Chiefly used for CAD application assets and data. Runs on Windows 7 and Windows 8. SolidWorks Enterprise PDM
SourceAnywhere A commercial, proprietary revision control system that maintains a central repository stored in Microsoft SQL Server. Runs on Microsoft Windows operating systems. SourceAnywhere
StarTeam A revision control system that focuses on usability by multiple development teams in different locations. It supports Microsoft SQL Server and Oracle database for its repository. It operates on Windows operating systems and Red Hat Enterprise Linux (RHEL). StarTeam
Subversion Originally designed as a successor to CVS, also known as Apache Subversion or SVN. Extremely popular with the free software community, and also in larger-scale corporate software development. Fully cross-platform, free, and open source, released under the Apache license. Subversion
Sun WorkShop TeamWare A distributed revision control system also known as Forte TeamWare and Forte Code Management Software. Developed by Sun Microsystems, used to develop Sun's largest software projects including Solaris and Java. Sun WorkShop TeamWare
Team Foundation Server A source code management software package also known as TFS. Developed by Microsoft as part of its Visual Studio Online development suite. Team Foundation also provides applications that facilitate project reporting, automated builds, lab management, testing, and release management. Natively integrates with Visual Studio on Microsoft Windows and the Eclipse IDE. Team Foundation Server
Rational Synergy Software Configuration Management software that provides project management capabilities, including revision control, for all development assets including binary files such as images. Includes a change management tool called Rational Change. Runs on AIX, HP-UX, Linux, Solaris, and Windows. Rational Synergy
Vault Commercial, proprietary revision control system intended as a replacement option for Microsoft's Visual Source Safe. Built on Microsoft .NET, and uses Microsoft SQL Server. Runs on most versions of Windows. Vault
Veracity Distributed revision control system that also provides bug tracking and build management for Agile development teams. Free and open source, released under the Apache license. Veracity
Vesta A software configuration management tool originally developed by DEC, and eventually released as open source software under the GPL. Key features include guaranteed build repeatability, automatic dependency detection, and a shared build cache that allows developers to re-use previous builds. Vesta
Visual SourceSafe A source control software package released by Microsoft, highly influential due to its wide adoption. Discontinued in 2005 after widespread criticism of its stability. Visual SourceSafe

Branch, Bug tracking, Programming terms, Trunk