The best kittens, technology, and video games blog in the world.

Tuesday, April 24, 2007

Distributed version control with SVK

charleyBook by Hackintosh from flickr (CC-NC)

I had to shut down the server with my Subversion repository for a few days. As I felt like coding and I hate coding without some sort of revision control system in place, it was the time to check out some Subversion alternatives.

I dumped my Subversion repository (svnadmin dump) and scp'ed it to another machine. Pretty much at random I picked SVK first.

It turned out what I did wasn't the right strategy for setting up a local repository - most distributed revision control systems prefer to use network connections to set up mirrors. I had possible to convert the dump back to Subversion database (svk admin load does more or less the same thing as svnadmin load), moving the imported files somewhere else, and mirroring that, using file:// protocol (svk mirror followed by svk sync -a).

That wasn't all, as one is not supposed to work on mirrors directly - the official way is to create a local branch (svk copy), commit there, and sync later. Setup was a bit compicated, and svk sync -a took over 15 minutes, but afterwards it was a pure pleasure.

Pretty much every single command I used in Subversion just worked, I only had to say svk whatever instead of svn whatever. Even svnadmin commands are available with svk admin. That's quite important, as I knew and liked Subversion already, and didn't really felt like switching paradigm more than necessary. svk was also very fast once installed. That's also a nice thing, as I tend to commit every single new unit test separately instead of doing big commits every few hours.

Well, there's not much more to add - SVK just works, and without a lenghty adjustment period.

No comments: