By Larry Brown
Teamwork is very important when you are working on large-scale or rapid turnaround projects. Using a Distributed Version Control System (DVCS) such as Mercurial with revision control client TortoiseHG, is a must to increase the likelihood of success and mitigate risk. When multiple developers need to have concurrent access to source code at the same time Mercurial is a great tool. It provides features such as a repository explorer, commenting of committed files, differentiating and merging interfaces, data mining of repository content, an integrated web interface, and repository synchronization.
You can use Mercurial universally across the board of programming platforms. Not only can it be applied to National Instruments LabVIEW, TestStand, and LabWindows/CVI, but also to Microsoft Visual Studio. This allows a seamless transition from project to project regardless of the development environment, while allowing developers to make modifications in a working directory, add new files and/or directories, commit changes locally, and update the repository allowing synchronization by the rest of the team.
Communication is very important even with a DVCS in place. That said, the repository prevents loss of work by allowing anyone on the team to revert a working directory back to any previous commitment point during development. This can be helpful if the working copy of the software becomes corrupted. For example, if a team member commits changes to the repository and discovers that someone else has already modified that file, that developer will have the option of merging the two files together. In LabVIEW, because files are binary, developers use a tool provided by NI to graphically select changes to keep. If the developer makes an error merging or accidentally deletes for example, he or she can restore a single file or whole directory back to the working copy.
Some centralized version control systems prevent file conflicts by granting full access to only one member at a time; however, when time is the most critical component of the project this may not be the most effective method. When two or more developers must work concurrently on the same source code there has to be a system in place to minimize the risk of time and effort loss. Mercurial is one example of a version control system that provides this safeguard while enabling unencumbered development.