Have you ever heard developers using terms like “Git,” “SVN,” “revision control,” “version control,” or “repo,” and wondered what they were talking about?
If you’re hearing these words, it's usually a good thing. The processes they’re talking about in those mysterious terms save time and money by allowing developers to work together efficiently, make deployments safer and faster, and safeguard your project against loss.
Want to know the how and why? Read on!
Revision control and version control, in this context, are terms describing a method of software code management. Git and SVN are two popular programs used for revision control. A “repo” is a code repository, where different versions of the source code for a project can be stored.
Without version control, projects involving more than one person could waste much time integrating each team member’s work into the code base. But even a one-person project can benefit from version control.
How does version control provide all these benefits?
Version control provides a structured way of combining code created by different people into the same project. A version-control program will flag when two people have changed the same piece of code, so they know someone needs to look at the code to merge the two changes. Without the flag, one piece of code would overwrite the other, potentially creating a problem (bug), or preventing the code from running. Dealing with these kinds of conflicts can cause delays and extra work.
Version-control software provides a work history. If a code change introduces a problem, it’s simple to review the log to see what changes were made. It also provides an easy way to roll back the code to an earlier state when things were working properly.
Finally, version control provides a platform for automatic or semi-automatic program deployment. This is not only faster than doing deployments manually, it is much less error-prone.
Are there downsides to using version control?
No, but there are caveats. Some projects don’t lend themselves to the common tools used for version control because of the way the software is organized. You have to use the right tool for the job.
There are many different approaches to managing code within a version-control system. If multiple agencies are collaborating on a project, it’s important to take the time to settle on a joint methodology.
For further reading on version control, the Wikipedia version control entry has lots of good background.
Version control is an important tool for delivering quality work on time and on budget, and an indicator of good development practice. You don't need to know the details, but you do want to know that the developers on your project are using it!