Version Control Systems: Gotta Have 'Em

Sept. 9, 2006
Managing software-programming development - including revisions to any specific program - should be a concern to all programmers and developers involved.
To manage changes, a must-have in software development is a version control system (VCS), suggests Bartosz Milewski, Ph.D., and president of Seattle-based Reliable Software (www.relisoft .com). Those VCSs track revisions through a dynamic database. That common repository where software developers can share files enables companies to secure their source-code assets, explains Pat Burma, sales engineer for Seapine Software Inc. (, Mason, Ohio. He notes that version control provides some basic source-code-control features such as merging, file locking, and identifying release and build configurations through labels or branches, plus common activities such as check-in and checkout.From a business-process-management view, version control is essential, Burma stresses. A sub-process, version control defines how the company manages its source-code assets. A proven methodology such as version control to manage software changes will ensure several things, he believes: predictable project planning, and auditable and traceable change management, as well as efficient and reliable build management.But version control by itself is not very useful on a corporate scale, Burma says, particularly if everyone uses his or her own VCS that is tailored only to individual needs. “Version control as a business process can effectively regulate application-lifecycle management and software-development lifecycle with surprisingly predictable outcomes,” he says. “Working as a team with common VCS implementations can help achieve this (predictable outcomes) by generating a measurable environment, which is possible through consistent practices,” Burma says. “This differs from using many different tools and techniques, which makes it much more difficult to measure performance and create baselines.”Must haveSeveral items comprise Milewski’s list of VCS must-have attributes. Those include ease of use, ease of installation and ease of maintenance. “A VCS should be as unobtrusive as possible. It should become an integral part of the development cycle. It should help the programmer’s work, rather than impose its own demands and restrictions,” he explains.Ease-of-use also means a good user interface. “If a team uses mostly command-line tools to develop a project—compilers, linkers, make utilities—then a command-line VCS might be appropriate,” Milewski observes. But if the team is used to graphical user interfaces (GUIs) in their integrated development environment, the VCS should also have a comparably sophisticated GUI, he adds.But no single recipe exists for choosing a VCS. End-users should seek features that support their development styles and environments. “For instance, if there is a lot of independent development, then branching and merging are important,” Milewski explains. But in agile development, the ease of making small change-based check-ins, quick integrations and code reviews is paramount, he believes. He notes that end-users should avoid file-based VCSs, but seek “atomic check-in (a database theory term meaning the operation either succeeds fully or fails completely) of multiple files,” which he says is standard now. Other attributes Milewski believes VCSs should have include keeping track of files that have been renamed, moved or deleted; and integrating with other tools, whenever possible.What’s the most important thing about a VCS? “Use one! I’m always amazed at programmers who don’t. You don’t have to buy an expensive system requiring a dedicated server,” Milewski explains. “But if you are serious about programming, or Web development, you must have a VCS!” C. Kenna Amos, is an Automation World Contributing Editor.

Sponsored Recommendations

Measurement instrumentation for improving hydrogen storage and transport

Hydrogen provides a decarbonization opportunity. Learn more about maximizing the potential of hydrogen.

Learn About: Micro Motion™ 4700 Config I/O Coriolis Transmitter

An Advanced Transmitter that Expands Connectivity

Learn about: Micro Motion G-Series Coriolis Flow and Density Meters

The Micro Motion G-Series is designed to help you access the benefits of Coriolis technology even when available space is limited.

Micro Motion 4700 Coriolis Configurable Inputs and Outputs Transmitter

The Micro Motion 4700 Coriolis Transmitter offers a compact C1D1 (Zone 1) housing. Bluetooth and Smart Meter Verification are available.