“Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later” (see Getting started with Version Control). We actually used such a system to author these texts and enable a larger community to work on it.
Today, it seems Git has become the Defacto Standard as offered by Github, GitLab, and others. Get yourself familiar with the basic elements of Git - we found the GitHub cheatsheet a good start and this cheatsheet a good everyday companion. While most IDEs take away the necessity to fiddle with the command-line, you still need to understand the basic ideas. And still, for some things you end on
Within DeepCode, we obviously use Version Management and you can have a look at it yourself. Check out our GitHub site. If you want, you can sniff a bit around to see how we do branching and managing Pull Requests (and that nothing escapes Arvyd :-) ).
Actually, version control winds out not to be as straight forward as you think when getting started with it - especially when dealing with legacy code being installed out there in several versions. You need to have a clear strategy how to continue developing while back integrating fixes into already deployed versions. There is a well-aged evergreen article on this: A successful Git branching model. In the modern approach, we probably want to follow the GitHub Flow:
(Picture Source: https://hackernoon.com/15-tips-to-enhance-your-github-flow-6af7ceb0d8a3)
In debugging, a version control system can help on various aspects:
git checkout, and
git diffas helpful commands.
git diff, plus
git logare of interest.
Version Management should be integrated into your lifecycle for task scheduling, code review, and CICD - make it the single storage of truth!
There are millions of reasons to have a version management system running and debugging is one of them. It helps you to find the buggy version, play, and experiment to identify the bug and test the fixing strategy. Finally, making a clean and well-documented change.
Learn more about the various aspects of debugging by reading more of our blog series. On top, check out how DeepCode works on your code.