Version control systems (“VCS”, also referred to as source control management or revision control) are a type of software application that are integral to the success of your software development project.

Version control systems provide a standardized way to store your source code, facilitate collaboration between teammates, and most importantly, maintain a historical record of all of the changes that have been made to your source code over time.

Benefits of using version control:

  1. Protect your software application by storing your source code in a secure way.
  2. Facilitate collaboration between software developers.
  3. Provide visibility, traceability, and audibility.

Types of VCS systems

Different software development teams have their own preferences for their VCS workflows. Depending on their project, they might choose one type of VCS tool instead of another.

Distributed systems

Distributed VCS systems (“DVCS”), like Git, are the predominant VCS of choice in the United States. DVCS allows you to “clone” a full copy of the source code repository to your local machine before making changes. Changes are often made to many files under a particular “branch” made within the local copy before creating a “pull request” to “merge” changes back into the original repository.

Centralized systems

Centralized VCS, like SVN or Perforce Helix Core, are the most widely-used version control systems around the globe and are often better suited for projects that involve large repositories, legacy applications, or binary files like design files, art assets (often used in game development), or other documents that cannot be handled in DCVS tools. Centralized VCS tools treat the “central repository” as the source of truth, and typical workflows usually involve three steps:

  1. “Check out” the latest version of code from the central repository to your local machine. (Often, teams will use “file-locking” features to lock files in the central repository so that you can warn other teammates that you are currently making changes to that file and prevent them from attempting to make simultaneous edits to the same file.)
  2. Make changes to the file(s) you checked out on your local machine.
  3. Commit your work to the central repository with a commit message describing your updates.

Download: How to Choose the Right VCS for your Team

Each version control type provides unique advantages, depending on your team’s previous experience, certain characteristics of your software, and the history of your project.

We put together a practical guide on how to choose the right VCS to help you determine the right version control for your project, focusing on the three most popular version control types—Git, SVN, and Perforce—and the four key criteria you need to consider when evaluating different repository types.