Git GUIIf you don’t use a version control system (aka “Source Control” and “Revision Control”), then start. If you’re unfamiliar with the concept, read up on the Wikipedia entry. In a nutshell, a version control system is the best way to allow multiple developers make changes to a single code base. The features and advantages of using version control extend far beyond this. For example, you can branch your repositories so you can separate your bug fixes (which often need to go live immediately) from your feature implementations (which don’t go live until they are completed and tested). Your version control system will help you cleanly merge your various branches back together seamlessly. You can also “roll back” to older versions just in case your latest changes make a mess of things. In a way, your version control system is one level of “backing up” your code base. Even if you’re working by yourself, using version control can be a very good practice.

There are lots of options when it comes to version control systems. In the commercial world, Perforce is very popular for heavy development. It also comes with a heavy price tag. Developers who get locked into Microsoft solutions often use Source Safe. While Source Safe gets the job done, most developers that have ever had to roll back, branch, or merge tend to dislike it.

In the world of open source, there are slews of options. Once upon a time, CVS was the defacto standard. More recently, Subversion claimed that space. There are many other options; however, the other recommendation I’m going to make is a “distributed” system known as Git.

Subversion: (wikipedia) As I mentioned, Subversion is the popular choice among the open source community. Many IDEs natively integrate support for Subversion. While the core Subversion client is a command line application, there are many GUI interfaces available such as Tortoise SVN for Windows and Rapid SVN for a variety of platforms. Subversion supports the “client/server” model meaning there is always a master repository and everyone pulls and pushes from the master. This is a clear and easy model to understand, but it does have some limitations. Overall, Subversion is an excellent and well supported choice in version control.

Git: (wikipedia) Unlike Subversion, Git is built around the “distributed” model. Unlike Subversion, you can pull changes from anyone’s public repository. Git is not as well supported in IDEs as Subversion, but this is slowly starting to change. There’s a distinct lack of GUI support for Git in general; however, some GUI support does exist. As a command line application, Git is extremely fast. This is particularly true when it comes to dealing with branches. Git requires a bit more effort to master but in turn provides powerful functionality.

I’ve always been surprised how few Web shops actually implement any kind of version control system. This is surprising given the number of free and powerful options available. If you’re setting up a shop or working in one that does not currently use a version control system, take the time to explore and learn. There’s a good chance it will save you a headache or two down the road.

Leave a Reply