20091217

RCS & SVN: Version control


With GIMP's "Map to sphere"

A few years ago, while I was still mainly a Windows user, I read 'Pragmatic programmer: From journeyman to master', and learnt about Version Control Systems. You know, SVN, CVS, Git, Darcs. As I was just a single user working locally (just wanted the incremental and logged backups), I installed RCS. Almost the oldest, and in some sense the most simple. It can work locally, just with a file of delta (text added from one revision to the next) which is a plain text, human readable file. If something messes up, it can be solved easily.


I was happily revising my source, as emacs has a nice transparent way of dealing with revisions.. until I had username conflict problems. Still don't know exactly why, I blamed Windows and gave up. Then I became a fully UNIX user (MacOS and Linux) sadly forgot about versioning. But recently I started using an SVN repository in Google Project Hosting, and it was working so well I re-installed RCS. Still a week and it works like a charm.

I already have an incremental backup script, which I usually run at the end of a long work time, now in addition I have named revisions for one of my main .tex files.

Using RCS with emacs (or using CVS, SVN or even darcs) is quite transparent. Setting aside the keyboard shortcuts, there is a submenu in the 'Tools' menu with the revisioning options. Emacs automagically detects from the directory structure if the revisions should be RCS, CVS or SVN and deals with it with almost no interaction. C-x v v either checks in or out the latest revision from the delta file, and C-x v c reverts the last check-in. As you can see, all shortcuts of the version control system start by C-x v. To add a file to the repository system, I always use the console, as emacs doesn't know by default which version control system to use. To add version control to filename, go to the working directory and ci -u filename.

As I am working on what I want to be freely available source, I also use SVN in emacs, keeping in sync the source files from my Linux netbook with my Macbook via Google Project Hosting. Soon you'll know more about what these projects are, with links for download, of course!

Now there is no excuse for keeping up with back-ups... And no excuse for saying "Oh dear, I need that piece of code I deleted last week!".

You may be also interested in
Written by Ruben Berenguel