Version Control. Why are you using it?
It is likely, that your team will be making extensive use of version control, and this is a good thing. Git has become the de facto standard for version control. Almost every open source project is now hosted in a publicly available Git repository, and as a consequence there is a wealth of knowledge and experience available concerning the use of Git. However, you should be asking yourself whether your team is reaping the rewards. Are you getting value commensurate with the effort to train people and enforce process? In this post, I want to suggest that knowing exactly why you are using version control is the first step to gaining the maximum value.
The risk in selecting technology based on popularity is that you are uncritically accepting assumptions about the problem and the objectives. No technology is a solution to all problems. Instead, the quality of a solution relates directly to how it addresses the specifics of the problem. In the context of version control, a further complication is that systems like Git can support a wide variety of processes, each of which addresses a particular set of problems. For example, processes tuned for Linux kernel developers are not necessarily appropriate to your own project.
The benefit to employing a technology based on popularity is that you gain access to a rich set of conversations about best approaches. Witness the number of posts about Git workflows. For example, Atlassian and GitHub both provide good summaries. Git workflows are an excellent example of version control processes, and hence a considerable asset when thinking about how you should be using version control.
So what are the questions that you should be asking around version control? Version tracking is the first thing that one typically thinks of, but since all version control technologies and processes will meet this requirement of being able to retrieve past versions of a project, it will not be differentiator.
The tension in version control that highlights the questions that you need to ask concern the difference between the clarity and the accuracy of the record. Where you consider version control to be a tool to assist developers coordinate effort and clarify the intent of their changes, you might expect lighter processes that allow for the rewriting of the history of commits to the project. Where you consider version control to be a tool to achieve project governance and represent the exact history of changes, you might expect more formal processes that establish clear lineages of each change that makes it into the repository. By deciding which is more important in your setting you can begin to better understand why you are using version control.
Love this story? Subscribe to the Syntegrity Solutions newsletter here and get them delivered to your inbox every month.
Andrew Burrow is a Senior Consultant at Syntegrity Solutions, a specialist IT consultancy that focuses on digital innovation enablement. He brings a philosophical bent to his IT practice. He’s both a big picture man and a devil when it comes to locking down the details – and we think that makes him a natural when it comes to integration work.