Tools that manage changes to source code, programs, documents, or other collections of information are known by a variety of names: version control, revision control, source control, or source code management are all common descriptors. Regardless of what we call them, these systems have become increasingly vital in a world where software and data are essential commodities.
Demand for version control systems
Version control systems (VCS) are used to track every change to source code. They help development teams and others manage these changes over time. As market pressures accelerate development efforts to bring products to market faster, version control has become more important than ever.
“As demand for more software increases, whether it be traditional software or emerging and growing areas of demand such as infrastructure as code, policy as code, and low-code generated code, there is a direct impact on the demand for version control,” says Christopher Condo, a principal analyst at Forrester Research.
“Since all code needs to be version controlled, any increased demand [for] software will result in an increased demand for version control systems,” he adds.
A report by research firm Acumen Research and Consulting expects the version control systems market to grow as more organizations adopt agile development methodologies, and as collaboration and code management become more important.
The market for these types of products will expand by an estimated 12 percent compound annual growth rate to reach $2.68 billion by 2030, according to the report. The increasing adoption of cloud-based version control systems is also driving market growth, it says.
“Version control or source control management was originally designed for developer source code,” says International Data Corp. Program Vice President, Software Development, DevOps & DevSecOps Jim Mercer. “But as we have evolved into an everything-as-code approach with things such as infrastructure as code, security as code, networking as code, and so forth, there are more consumers of version control.”
With everything as code, “this has paved the way for GitOps, a development and deployment methodology that uses Git version control to manage the entire application infrastructure and configurations as code in version control,” Mercer says. “Further, code has become the crown jewel for modern digital businesses, and therefore version control requires more functionality and security rigor to support and secure the code.”
What to look for in a VCS
Version control systems are evolving to meet the changing technical landscape and market demand. At a basic level, a version control system lets developers manage different versions of source code, configurations, and any other artifact that will change over time, says Condo. Teams also look for a variety of additional key features depending on the size and priorities of the organizations.
One such feature is scalability. These systems should be able to manage code across domains and platforms, enabling developers and others within an organization to use the same version control system, notes Mercer. Scalability is especially important for a growing company with expanding development initiatives.
Performance is another important benchmark. Version control software should be able to perform well wherever it is used within an organization, Mercer says.
A version control system should also have branching capabilities. Branching allows an object under version control to be duplicated so that each object thereafter can be modified separately and in parallel.
“As work is performed it’s a common practice to create [a] temporary branch for new work, to avoid disrupting work on the main branch,” Condo says. “Likewise, when new work is ready to be merged back into a main branch, the ability to merge a branch into a trunk is a critical capability.”
Collaboration is also essential for modern version control systems. Development teams oftentimes are working in different regions, and need to effectively collaborate on projects. Collaboration ensures that everyone is working from the same source, whether it’s with a single codebase or multiple branches.
Extensibility via secure APIs is another feature to look for. “Increasingly, version control systems are the system-of-record for orchestrating automations for triggering testing, deployment, and release automation into production,” Condo says. “Therefore, having secure APIs that can integrate version control with deployment and release management tools is necessary to achieve continuous delivery.”
Finally, these systems should provide data integrity and history, Mercer says. Users should be able to rely on the code version history to roll backward and forward as needed.
Orienting around Git and devops
Many version control systems have been developed over the past 20+ years, Mercer says, including Subversion, ClearCase, Mercurial, and others.
“However, most teams favor a Git-based solution based on the Git open source project, so the primary options are GitHub, GitLab, and Bitbucket,” Mercer says. “Most other version control systems have created bridges or integrations into Git, given its dominance.”
Most of the version control systems, including GitLab and GitHub, have added features to evolve into full-featured devops platforms, Mercer says. “Other developments tend to be around scalability, performance, security, and the ability to create policies to ensure source code is protected from things such as code leakage, enforcement of digital provenance, etc.,” he says.
GitHub, GitLab, and Bitbucket “have evolved dramatically to be more the ‘modern developer environment,’” says Thomas Murphy, senior director analyst at research firm Gartner. “They run the build, they manage the project, they manage documentation, they can package, test, deploy software.”
Generative AI in version control
Murphy notes that these platforms are now using generative AI assistants to help create and update code and perform other tasks. AI-powered assistants will help with common tasks such as creating commit messages or helping with branching and merging, which can sometimes become complicated, Condo says.
GitHub is one of the leaders when it comes to version control system innovation, Condo says. GitHub Copilot is a genAI application that uses data from GitHub to train large language models (LLMs), which then can assist developers with coding suggestions. GitLab is taking a similar approach with AI-powered assistants and is working hard to differentiate itself from GitHub, he says.
But the emergence of genAI and how LLMs are trained is a particular concern for some organizations, Condo says. “It’s public information that tools like GitHub Copilot use source code from public [version control] systems they host to train their model,” he says. “Buyers need to decide if they are comfortable with that or if they would prefer their code not be used for that purpose.”
Organizations with sensitive algorithms or concerns that intellectual property (IP) will be leaked need to look for safeguards to protect their IP from being used as training data, Condo says. “If the goal is to share the IP as an open-sourced project, it might be perfectly fine, as long as the customer can decide,” he says.
Cloud-based version control
Another trend is the shift toward cloud-based version control systems in recent years, Acumen says. These services offer benefits such as real-time collaboration, accessibility from anywhere, and lower upfront costs compared with on-premises systems, the firm says.
GitHub, GitLab, and other online repositories allow organizations to use their software-as-a-service products without the hassle of operating a self-hosted version control system, Condo says. “This makes it easier for distributed teams to collaborate across geographies in ways that self-hosted systems may find more challenging,” he says.
Organizations that choose to run their own on-premises version control system have their own set of concerns, and must have the necessary skills and resources to do so successfully and securely, Condo says.
“They must have the resources to effectively operate a secure VCS while still enabling access and collaboration with teams in other regions,” Condo says. “Even companies based solely in the US and [that] do business in the US must take this into consideration, as increasingly they are using remote developers or leveraging systems integrators that have developers in other global regions.”
On top of that, running a version control system also means keeping pace with change, says Condo. Version control platforms “are constantly evolving and being updated,” he says. “It will do an enterprise absolutely no good if it lacks the bandwidth or skillset to maintain the keys to their kingdom.”
Popular version control systems
What are the leading version control systems today and how do they stack up? Here’s a quick look at the field.
Apache Subversion (SVN)
A software versioning and revision control system distributed as open source under the Apache License. Developers can use SVN to maintain current and historical versions of files including source code, web pages, and documentation.
Bitbucket
A Git-based source code repository hosting and collaboration service owned by Atlassian. Bitbucket offers both commercial plans and free accounts with an unlimited number of private repositories. It is mostly used for code and code reviews.
Git
The most widely used version control system. Git is a free, open-source devops tool used for source code management. It can handle small to extremely large development projects. Using Git to track changes in source code allows multiple developers to collaborate on a non-linear development project.
GitHub
A platform from Microsoft’s subsidiary GitHub that allows developers to create, manage, and share code. GitHub delivers the distributed version control of Git as well as access control, bug tracking, task management, and other capabilities. The platform offers a large open-source repository, has tools for managing the software project and community, and has a broad set of partners that support it with add-in functions.
GitLab
Based on Git, GitLab is an open-source repository manager used for collaboration and version control. Teams can use it to manage projects, track issues, and review code.
Mercurial
A free, distributed source control management tool for software developers that can handle projects of any size. Mercurial was created with platform independence in mind.
Perforce
Supports Git but offers a proprietary product, Helix Core. Perforce is a version control platform for developers that tracks and manages changes to source code, digital assets, and large binary files.
Team Foundation Version Control (TFVC)
This platform from Microsoft is a centralized version control system, as opposed to distributed version control such as Git. TFVC lets users apply granular permissions and restrict access down to a file level.