Have you ever attempted to work on a Microsoft Word document with friends? You created the document, emailed it to six friends, and suddenly found yourself struggling to merge all of the different changes that came back to you.
It’s a nightmare.
If so, first off, it’s time to leave the Office and move to Google Drive. It’s a great way to collaborate online, in real time, on documents and spreadsheets. I use it when I write stories and blog posts in my spare time, and for all of my work documents too.
This post, however, is not about how to plan your vacation with six friends by using Google Drive. This post is about how multiple programmers can work on the same project at the same time. In its simplest form, it is two programmers sharing one content file, much like working with a friend to edit a Microsoft Word document.
At its most difficult, it is multiple teams of front and back end coders working on thousands of files in a project. Do you want to be the person to merge all of those files by hand as changes are made? Nope, neither do I.
That’s where subversion comes in. No, not subversion, the attempt to overthrow structures of authority. The subversion I am talking about is a software versioning and control system.
We did not always use subversion at Mindscape. Originally, we used the FTP server functionality that came with Dreamweaver. It allowed us to check out a file from the server. If someone else tried to checkout and work with the file as well, they were told that it was in use.
It was alright when there was three of us. Sure, sometimes a person would ignore the lock and work would get lost. Or someone would forget to check a file in before going on vacation, and we had to wait for them to get back and unlock it.
As the team grew, those mistakes happened too often. That’s where subversion came in.
A very trimmed down explanation of subversion would be that there is a machine that controls the repository that all the files come from. Users can get files from the repository. On their machine, a subversion client keeps track of changes made to those files.
When the user checks the files back in, the server compares the changes to the what it has. If there have been no changes since the user started working, it just applies the changes. If someone else made a change first, the server will attempt to merge the changes together. Mostly it works great, but sometimes it cannot merge it for you. In that case, the users are notified and have to manually merge the changes.
At Mindscape, we use a software service called Springloops to manage our repositories. It was easier to set that up then to learn how to administrate our own server. It has the added benefit of being able to deploy sets of changes to our development and production servers. It’s actually been a great tool for us.
On our computers, many of us use Tortoise, a free subversion client that keeps track of file changes locally. It’s easy and integrates directly into Windows.
Utilizing subversion, we are able to have multiple people working on a project at the same time. We can use the logs to go back through and see each change that happened, when it happened, and who made the change. It’s a great way to see who built a feature, and just as nice to figure out who to blame for a bug!
It certainly beats emailing files back and forth and trying to have a person manage merging them together.
Aaron Brander is the VP of Technology for MINDSCAPE at Hanon McKendry.