2 min read

What is Version Control?

What is Version Control?

Git is our tool of choice for version control.

"Git along little doggie!"

Version control, Git, and Subversion are terms you've probably heard mentioned by a developer or project manager at some point. What do they mean, however, and what do they matter to a project? At CommonPlaces, we use version control on all of our clients' projects, and Git is our tool of choice, as well as the one preferred these days by many developers in the industry.

In the software world, version control refers to using a system to track every change ever made to the files that make up your application. This is commonly called a VCS, or version control system. Tools like Git, or Subversion, which is also popular, work by storing the changes to all files under version control in a database, or repository. Each change, or set of changes, has a revision number or ID that can be used to see exactly what changed at any particular point in the project 's development.

Typically, a developer will do some work locally, making changes and testing, until reaching a point when deciding to commit the changes. One simple command is all that is required to tell the VCS that it's time to update its database with the record of what changed in that file or group of files. You can commit whenever you like, although the mantra "commit early, commit often" certainly is one to live by.

Let's say you did some work, maybe a whole LOT of work, and then realized you 'd pursued the wrong path. You need to go back to the way things were before you started. With version control, it's simple. With one command, you can get right back to the state of your code before you started. In fact, as long as you've been continually committing your work, you can retrace your steps anywhere along the way.

Suppose a file is accidentally deleted; or worse, something catastrophic happens and multiple files have been lost, possibly even the entire copy of the code. If you've been committing and pushing your changes up to the main repository, you can rest assured that it isn't gone for good. One command will bring it all back.

Version control is particularly helpful when you have more than one person working on a project, which is often the case at CommonPlaces. Each developer can be working in a separate sandbox, but sharing access to the same repository. Then, when a developer commits the work and pushes it up to the main repository, everyone else can pull down a copy of it and update their individual sandbox with the latest code.

It's also not unusual for the same section, or line, of code to be changed by two people. With version control and other tools which allow you to compare files, it's easy to see who changed what and resolve any conflicts that may have occurred. Even if just one person is working on the project, version control makes it possible to go back and look at any change along the way, solving problems like what recent change broke something that used to work.

Sometimes a site adds new features, while simultaneously some rudimentary tweaks or improvements are also being made. The half-finished new feature isn't ready for prime time yet, but those tweaks need to be released as soon as possible. How do those changes that are ready get pushed to the live site?

By using version control this becomes effortless, and is called parallel lines of development. New feature work can be done in a branch, which is created by taking a snapshot or copy of the code, then doing the new work in that copy without affecting the main line of development. When the new work has been completed and tested, the branch is merged back into the main line. This automatically combines all the code changes for the new feature with any modifications that may have happened in the meantime, like those tweaks or quick minor improvements previously mentioned.

Version control benefits every project's stakeholders by improving efficiency, communication, and source code management. Tools like Git and Subversion are integral parts of the development process. I've been using different VCS methods myself for over 20 years now, and I can't imagine doing it any other way.

What methods work for you?


Related Posts

1 min read

The Return of the Multi-Headed Beast: HTML and Your Website

Your new website is under construction and the developer is meeting with you, talking to you about HTML, scripting languages, and browsers. As usually happens when you hold these meetings, the...

Acquia and Drupal Featured in the Boston Globe

You can currently read a great article about Acquia and Drupal on the Boston Globe site (thanks to Eileen for sending it to me!). Acquia is located in Andover, MA, and the article is all about how...
1 min read

Security Is In The News - Is Your Site Secure?

Data security was in the news in a big way last week. First, major news outlets reported Thursday morning that Iraqi insurgents were using $30, off-the-shelf software to hack into the video feed...
3 min read

The Balance Between Web Design and Usability

In the realm of web interface design, there is a constant game of tug-of-war between creativity and usability. On one hand everyone wants to build a beautiful site that stands out from the crowd...