An introduction to Version Control

Clinton Reeves / Posted 1.31.2012

An introduction to Version Control

Websites are usually under continuous development, and in many cases, by more than one person.  As a site evolves over time, keeping track of these changes can become next to impossible. When everything is going smoothly, tracking changes isn’t an issue. But what happens when you realize that one of these changes has broken the site? And you’re not sure which change it was…

What do you do? Where do you start? 

Troubleshooting is always an option, but this can take quite a bit of time – especially if you weren't the last person working on the project.

What if there was a way to track individual changes made within a project throughout its entire development? Even better, what if you could go back through the changes one by one, or even revert back to an earlier version of a site with only a few simple clicks of the mouse?

With Version Control, you can.

Version Control Systems (or VCSs) are designed to record and manage changes made to computer documents. These systems store and track changes as you move through the development life cycle of a website. The benefits of Version Control Systems are not just limited to tracking changes. 

If you’re not currently using a VCS, read on to find out how much better your website build (and your life) can be.

Why use Version Control?

Version Control can make the development process faster and more efficient. 

Version Control enables you to track changes as they are made to a project. Recording changes gives you the ability to answer all the who, what, when, and why questions. 

Who made the specific change? What was the change designed to do? When was it made? Why did he or she make it? The answers to these questions can provide you with valuable and in many cases, time-saving, information. Imagine how easy your life would be if you knew what change was made, what file it was made in, and what part of the code was affected.

Fun fact:

Version Control is not just for “programmers/developers.” As a matter of fact, it can be used in a wide variety of situations. Any time you are working with an electronic document that may change on a regular basis, some type of version control can be used, and it can really help keep you organized.  Authors, legal professionals, even college students can all benefit from a VCS.

Version Control also allows multiple people to be working on the same project at the exact same time. 

Each individual can grab a copy of the project; do the work, and make the changes available to everyone else – simultaneously. VCSs are  designed to manage, and ultimately merge, all of these changes into one master document. 

The ability for multiple people to be working on one project at the same time means that projects can move through the development phase at a much faster pace. In addition, changes can be made to a project for testing purposes and, if they do not work out as planned, they can easily be dropped before bringing the system live.

With Version Control, you work remotely. 

If you are working on a website, you don't need an internet connection to make and test changes.  The VCS will actually load the site files stored in your repository onto your local machine.  From there you can run your site through a local server configured to run on your individual computer.  In the event you lose your internet connection for a little while, or if you are on the road and simply don't have access to one, you can still get work done.

Types of Version Control Systems

There are a wide variety of Version Control Systems available for use.  A few of the more common ones are:

All of the systems available have their strengths and their limitations – though this article isn’t about which one is the best.  That said, within the context of web development, GIT has become extremely popular. 

With the various VCSs available, how do you know which one is right for you?

Answer: Research. 

You know the work you do and the industry you operate in better than anyone else, so do your homework. Ask yourself, what system is the industry standard? Is there one VCS that is more popular than another?  Is there any reason why it's more popular for this industry?  Take some time to read about the available systems. There are tons of books, websites, and forums dedicated to the various VCSs out there (Note: if you are interested in Git, check out  “Pragmatic Version Control Using Git” by Travis Swicegood). 

And of course, and play around with a few systems. After some experimentation, your preferences will probably shift to one system you enjoy most.

Things to consider

Version Control is great and it can do wonders for you and your organization.  But you should know that there will be challenges. 

One of the biggest challenges, especially in respect to web development (and in direct extension Content Management Systems), is the database. Unfortunately, VCSs are not well equipped to handle database changes at this time. Know that there are several ways to overcome this limitation – but you’ll have to wait until a later article. It’s not easy to explain.

And of course, no matter what VCS you use, just know that there will be a learning curve. If you have never used Version Control before, take some time to get used to the system before running ALL of your projects through it. Be prepared to break things. Be ready to get a little frustrated.

With a little persistence, you'll have it figured out in no time. And the time spent learning is worth it – because that is time that you won’t have to waste trying to track down who broke what and when and how on your website.

For those of you who are currently using Version Control, please share your experiences!

What system do you prefer and why?  Do you recommend any specific books or resources for someone just starting out?

Clinton Reeves

Clinton Reeves

Back-end Developer

Clinton is a back-end developer at Q Digital Studio who lives and breathes code. He is Q Digital's resident problem-solver; if he can't fix it, he'll just create new code or a shiny new add-on. When he's not problem-solving at the studio, he's likely tinkering with an arduino project, or working on his house.