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. (www.seapine.com), 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

Strategizing for sustainable success in material handling and packaging

Download our visual factory brochure to explore how, together, we can fully optimize your industrial operations for ongoing success in material handling and packaging. As your...

A closer look at modern design considerations for food and beverage

With new and changing safety and hygiene regulations at top of mind, its easy to understand how other crucial aspects of machine design can get pushed aside. Our whitepaper explores...

Fueling the Future of Commercial EV Charging Infrastructure

Miguel Gudino, an Associate Application Engineer at RS, addresses various EV charging challenges and opportunities, ranging from charging station design strategies to the advanced...

Condition Monitoring for Energy and Utilities Assets

Condition monitoring is an essential element of asset management in the energy and utilities industry. The American oil and gas, water and wastewater, and electrical grid sectors...