Recently, in an attempt to ease coding pains while also putting off doing any real work, I’ve experimented with versioning systems. My only previous experience of this was working on a group project back around Easter time, when I was appointed group CVS techie for having read through the manual more quickly than anyone else in my group. The main responsibility of being a CVS techie, I learned, seems to be to muddle around with it when the repository somehow manages to corrupt itself, and bitchslapping anyone who commits buggy code. Perhaps not the most appealing introduction to versioning there.
(For those who haven’t come across versioning systems, they work something like this: there’s a central body of code for a project, known as a repository. Different developers can get hold of (“check out”) a copy of this code, make whatever modifications are needed, and write back (“commit”) their changes to the repository. If someone else has made changes to the repository while you’ve been making yours, you can tell the versioning system to try to merge these changes together, usually with a reasonable degree of success.)
So anyway, fast forward n months to the present. I decide that, for my website development as well as a 10,000-word dissertation that I’m planning on writing in LaTeX, I could probably do with getting the hang of some form of version control. It would also make it easier to develop using my dual-booting Windows/Linux box.
Going on the experience of certain people, and going on my less-than-rosy past experiences with CVS, I decided to plump for Subversion, which was apparently designed to be “a better CVS” (or CVS++, if you’re feeling geeky). It also has a companion project, interestingly titled TortoiseSVN, which provides some rather nice integration into the Windows shell. Very handy.
To cut an increasingly long story short, I’m really feeling the benefits of version-controlled development. I can synchronise my Windows, Linux and ‘live’ copies, and still have another local copy for new developments and so forth. My only real problem with it (other than having to type in my password up to 3 times to connect to the server, which I can live with) is that Windows and Linux don’t co-operate very well, as we all know. This essentially means that my database backup and restore scripts don’t get marked as executable by default, and that I may have to do something horrible soon, like give them
.bat extensions. In the meantime, however, my Windows development will just have to be inconvenienced a bit until I get myself a Mac (a plan which is still sitting around on the drawing board complaining that it hasn’t got any money).
Apologies for the overly technical/geeky nature of this post, by the way – I’ll no doubt get back to something a little less hardcore in due course.