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.
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 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 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:
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.