Revision Control
March 5th, 2007
This post is in the Revision Control, if you are interested please feel free to peruse the archive.
I’ve decided to write a series of articles discussing version control. Answering questions such as, “Why should you use it?”, “How do you use it?” and “Who should use it?” I have very little doubt that this may be just repeating what has been written elsewhere by much better writers than myself, however I’m sure that the process of writing it will be educational for me and worthwhile for anybody who reads it.
What is Version Control?
As always, the best place to initially find out what something is, is Wikipedia. I thought about quoting something from there, but if I did, someone would probably change it and then I wouldn’t actually be quoting it. Anyway, revision control is any way of keeping track of the changes made to anything. Think about the “track changes” in Microsoft Word, or zipping up the code you are working on and calling it mycode_01032007.zip, these are both rudimentary forms of revision control. Most people have done something like this, probably thinking of it as backing up, but realistically you may want to be able to go back and have a look at the changes you made a week ago, and don’t necessarily want to unzip 3 different files to check which one the changes were made in.
Now, software developers are the laziest people, that’s why they started developing software in the first place, cause they couldn’t be bothered going through an entire file and pasting the same text in, or because they wanted to be able to go to a website to check there email cause they didn’t want to waste 25 seconds of their life opening up Outlook. I could name a million conceited examples of why software developers are lazy, but I suppose what I’m trying to say is, I’m a lazy bastard, and I’m a software developer. I’m getting off the track, but it won’t come as a surprise that some smart cookie, lazy, software developer wrote some software a long time ago called RCS (Revision Control System). Then in 1984 a guy by the name of Dick Grune who doesn’t seem to be a lazy guy at all used RCS to develop CVS so he could work better with his students on a project.
CVS takes a folder of your files and stores it in a central location, then whenever you want to make changes, you commit those changes to the repository. CVS then stores a history of what you had, and what you’ve got, so at any time you can ask it what you had, this seems like a pretty good idea and it is. CVS is an amazingly successful piece of software, with some of the biggest open source software projects still using it (Mozilla and Apache to name 2). 23 years is a long time for a piece of software not to have been superseded. Now to say it hasn’t been superseded is a bit of a lie, there are a number of different programs that do what it does, SVN, Gnu Arch and Visual SourceSafe are a few of these, but essentially they don’t do that much more than CVS did 23 years ago, they just do it differently/better/worse or with more integration into certain products.
The Adventures of Slightly Taller Than Average Man » Michael Gall writes about revision control said:
[...] Revision Control [...]