Change Management for Controls Systems with Git
It is difficult to search software titles for very long without coming across something being sourced by a Git server (such as GitHub). As the default workflow for over 10 million software developers, coupled with the recent announcement that Google Code is being retired, there seems to be every reason to believe that Git is here to stay. How can those of us writing software for controls systems take advantage of this tool in our everyday work flow?
What is Git?
The website describes it as such… “Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.”
What’s all the fuss about? Let take a look at the basic Git Commands from a fellow Git user’s cheat sheet.
Assume you are writing something on your own machine with no other developers. Git gives you the ability to efficiently keep track of every change and navigate backward and forward through different points of the development. You can create a branch for each different step of your development, revert back to a prior point in your coding, or test several different versions of the code along different branches. Git provides status of the code you just changed in the form of diff reports and commit status. You may decide to create a “release” repository and a “working” repository to maintain versions that others could test by doing a push to a published copy. All this is done without ever copying a file to a temporary name or saving a file “just in case” you need to go back. Pretty cool, right?
As soon as you need to have multiple developers, in different places, working on different phases of a project, change management becomes exponentially more valuable. Two different coders can be working from the same repository, but one is using an older and more stable version while the other is adding features for the next phase. At the same time, either can jump forward or back to see if there are going to be any problems that may surface based on the way things are being done.
In our offices, many of the National Instruments developers use Git for their code development. Quite frankly, they can’t understand why the PLC guys are not there yet.
Until the point in time at which PLC code can be reliably imported and exported to and from text, Git will not be as useful to automation guys, but I can see us headed there.