person in red parka walking over natural bridge over water
PHOTO: kyler trautner

Organizations that write any type of code usually use a source code version control system (VCS) such as Git (and its commercial variants) or Apache Subversion. Typical use of a VCS is to have developers write code and store it in the VCS’s repository along with any other important files. If someone needs to do anything with the code, they check it out so that they can work on a local copy and then check it back in when they are done. This helps ensure that multiple developers working on a project don’t make changes that can’t be resolved.

A VCS also maintains old versions of code so developers can see the trajectory of their work as well as devolving back to old versions if needed. In a nutshell, a VCS keeps code versioned, organized and ready to build.

Related Article: This Is How We DevOps

Why Version Control Systems Are So Important

It’s easy to think of a VCS as a place to keep code so it doesn’t get stomped on. That belies the importance of the modern VCS. It’s actually a vital link between development and deployment, and a key component of continuous integration/continuous deployment (CI/CD) pipelines. A VCS is usually the place where the CI in CI/CD begins. The VCS creates the source code of record and organizes it for the build.

When choosing a VCS product, keep in mind its lynchpin role in CI/CD. Subsequently, a VCS should support two features to make sure it carries out this role.

First, it needs to have collaboration tools. There are vital processes in code development, such as code reviews, that are really workflows that plug into the overall CI/CD workflows. These collaborative workflows form the boundary between development and CI/CD. They help prepare the code base for the next step — the build.

One of the downsides of CI/CD is there is no single product that can manage the entire pipeline. It is inevitable that DevOps teams will have to integrate products themselves. For this reason, the second most important feature of a VCS is a robust API. Without well designed APIs, integration between the VCS and other parts of the CI/CD toolchain, for example, Jenkins, will be much more difficult and prone to errors. At present, most organizations expect RESTful APIs built around HTTPS and that’s what most products deliver. It’s the scope of the APIs that matter the most.

Related Article: What Is a Continuous Integration / Continuous Delivery Pipeline?

VCS Moves Beyond Code Storage

Source version control systems have been around a very long time, stretching back decades. The VCS are taking on greater importance as the head of the CI/CD pipeline. Features to support this role are now more important than ever. It’s vital to keep this in mind when committing time, resources and money to a VCS. It’s not just about storing code anymore.