Version control: Track the who, what, and when of software changes

Version control software is an indispensable tool for today’s complex software development projects

Tracking the who, what, and when of software changes
NESA by Makers (CC0)

You could say that the opposite of version control—from the perspective of internal software development—is chaos. If development teams don’t manage various versions of their work, things can quickly spiral out of control.

Version control software, a component of software configuration management, helps teams manage changes to documents, programs, websites, and other development initiatives. Given the fact that so many development efforts rely on teams working on the same files at the same time, a lack of version control could create serious problems.

When multiple teams design, develop, and deploy applications, often more than one version of the same software is deployed at different sites, and developers work on updates simultaneously. Some features—and in many cases some bugs—might be present in only certain versions of the software.

What is version control?

To make changes requires the ability to retrieve and run different versions of the software so developers can determine which version has problems.

Version control can also be referred to as revision control or source control. It’s how organizations manage the changes to source code and retain a history of those changes, says Thomas Murphy, a consultant at research firm Gartner.

There are two approaches: One allows you to work on a document, but no one else can change it at the same time. The other method does allow multiple users to simultaneously make changes. “Think of it like two authors working on the same document in Google Docs,” Murphy says. Either way, you need tools to keep developers from walking over each other. Version control can support both cases by keeping track of changes and the order in which they happened.

Version control tools also allow developers to change code and test it without fear of losing the existing code if the change doesn’t work, says Jeffrey Hammond, a principal analyst at Forrester Research.

“If you’ve ever had a Word [document] or a PowerPoint presentation and had to resolve the edits of multiple editors or wanted to delete some content but were afraid of permanently deleting it, then you understand the need for version control,” Hammond says.

Demand for version control software has grown along with the increase in software development, according to Murphy. But so far use of the software has not really expanded outside of the developer market, even into the low-code/no-code area.

Version control software

Forrester’s market analysis notes that most development teams use some sort of version control. In its most recent Forrester Business Technographics Developer Survey, released in 2018, the firm found that more than 90 percent of developers and development managers working at enterprise organizations use a source-code management system.

Development teams can take the simple approach of retaining multiple copies of different versions of a program and then labeling them appropriately; however, when there are many similar copies of a program, this is inefficient and can lead to errors.

That’s why version control software makes sense.

So how can organizations select the most appropriate platforms to meet their needs?

One of the first tasks is to learn the subtle differences between the platforms. Essentially the heart of all version control platforms is Git, an open source distributed version control system for tracking changes in source code during software development. Although Git is designed to help coordinate work among programmers, Git version control can be used to track changes in any set of files.

“If you don’t build on top of Git, you are building for a specialized market,” Murphy says. Prior to Git, the market had already shifted fundamentally to open source via Subversion, which radically disrupted the commercial market, he says.

Given that the major offerings are all built on the same Git engine, buyers need to look at subtle differences to find the best fit. “What you find is there really are few differences; it is more about the collection you put together, personal preference, or how things are packaged from a pricing perspective,” Murphy says.

One option is GitHub, which Murphy says offers the largest open source repository, has tools for managing the software project/community, and has a broad set of partners that support it with add-in functions.

Microsoft also offers GitHub Enterprise for the enterprise market and Azure Devops, which is the successor to Team Foundation. Azure Devops is a collection of tools for organizations that want a more integrated application development life cycle, Murphy says. It has similar functionality to GitHub but combines that with agile planning and test management.

GitLab is another open source offering that comes with features such as an integrated project and continuous integration capabilities so teams can automatically test and deliver code. They can access all aspects of a project and view code.

Atlassian’s Bitbucket is often deployed by users of other Atlassian tools, Murphy says. Like other version control systems, much of the value and differentiation comes in how the core source repository is combined with workflow and the system that builds and tests the changes, he says.

IBM offers Rational Team Concert (RTC), a multiplatform team collaboration tool based on Jazz and Eclipse that provides developers with functionality for agile application life-cycle management. RTC functions include integrated planning, task tracking, team and process awareness, project health tracking, and a uniform interface across multiple platforms.

Also available is an older option, Concurrent Versions System (CVS), a free system that keeps track of all work and changes in a set of files and allows several developers to collaborate. CVS uses delta compression for efficient storage of different versions of the same file, which is suitable for large text files with few changes from one version to the next (usually the case for source code files).

Key features of version control software

How to narrow down the choices? Companies should first consider the cost structures, how they plan to use the software, and how they want to distribute the software to users. Here are some additional general considerations.

Can the version control software be deployed on local servers, in company-owned data centers, or via the cloud? Although most applications are moving to the cloud, not all organizations want everything to be cloud-based.

Does the software have good branching and merging support? Developers might want to quickly create a branch of their code, make changes, test them, and merge them back into the main source tree.

How does it resolve merge conflicts? If a developer changes a bunch of code files and some of them conflict with changes made by another developer, the first developer will want to compare the changes and resolve the conflicts, Forrester’s Hammond says. This might require the first developer to examine different versions of code line by line to see what needs to be accepted.

Is there support for offline usage or cloning of repositories? Developers can’t assume they will always be connected to the company’s network or the Internet, Hammond says. Someone traveling on a train or airplane might want to take a copy of code to work on while disconnected. That worker might also want to create a complete new copy of a project by cloning a repository to take it in another direction.

Another possible feature is change review workflow. On large projects, an architect or project manager might need to review a developer’s requested changes. Making this workflow as seamless as possible is important, Hammond says, because so many changes happen every day, especially on large projects.

Then there are integration capabilities necessary for a large number of development operations. This includes integration with other development and devops tools such as issue-tracking systems and test-automation tools.

No development tools live in isolation, Murphy says. They need to connect or integrate with other pieces of the development operation, and they need the support of the developer community. “In this market, the primary decisions about what tools to use are made by the people using the tools,” he says.

Finally, as with any other aspect of IT and development operations, security should not be an afterthought. What sort of access controls are in place? Who has access to source code and the operations performed on that code? Security capabilities might include data encryption, two-factor authentication, and password protection.

Given the complexity of modern software development—and the teams performing it—it’s easy to see the advantages the right type of version control software can provide. Organizations that take the time to select the right product will see it lessen some of the common problems that plague their development teams.  

Copyright © 2020 IDG Communications, Inc.