Experiments in versioning

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.

2 Responses to “Experiments in versioning”

    •  Gravatar for Nina
    • From Nina
    • Sunday 24 October 2004 at 21:11

    on an entirely unrelated note… Resistor Pr0n

    •  Gravatar for Ben
    • From Ben
    • Monday 25 October 2004 at 00:43

    Ahh version control. Saved our bacon at work more times than I care to remember (we, unsurprisingly, use Microsoft’s SourceSafe product). Admittedly, if you have 4 people working on the same project at once, and the project wont compile because some moron checked in their dependent code before you’ve finished the writing bit of code that he’s depending on, and then find that the C# compiler wont tell you that your code doesn’t compile because someone else’s didn’t compile first and then you check it in and ‘poof’… well, it’s messy anyway. Single userage probably wont have that problem unless you possess multiple machines and pairs of arms (or if you can type with your feet).

    I’d suggest you get a plan for that Mac of yours, it’s starting to sound like you’re typing it as a threat to your Windows box to say: “If you crash when I click submit I’ll replace you”, rather than actually buying one :) (If you’re getting a Powerbook, do make sure you wait until at least January when there is expected to be an announcement of some kind of new model (possibly G5, possibly dual-core G4 or maybe just pink). Of course, OSX Tiger is out in the Spring too… how long do’yah want to wait?