Day 6: svk for beginners

osfameron on 2005-10-27T20:19:43

At Fotango, clkao gave some presentations about svk, a version control system leveraging Subversion and Perl, written by CL himself. To my disgrace, I stuck to svn, as I know it and didn't have enough time (er... I mean, was too lazy) to learn it.

$new_job however doesn't have a company wide version control system, and I thought it might be a good time to start using svk as I've heard good things about it. So I installed (it's packaged for Ubuntu breezy, but not for hoary, though there are some good and functional inststructions linked from the svk wiki).

Then I emailed clk who told me about the svk commit --import option. This will check in a working copy automatically doing adds and deletes for you! Which is so cool, as you can basically synchronize a working copy with the main unversioned development box and then simply import without having to manually or automatically parse the svn output about what's changed.

I've set it up like this (and please do let me know if you have any suggestions on how to improve it).

A shell script called "pull" rsyncs a list of directories to a working copy called DMZ. (This is slightly annoying as the setup currently doesn't allow authorized_keys, so for each entry in the list I have to type in my ssh password, but I've raised this with the sistemisti). The script then does an svk ci --import with a default message.

Another script 'pull-up' basically does svk up in my actual working copy sandbox.

A final script 'push' does an svk commit in working copy, updates the DMZ, then parses the output of the svk up on DMZ and generates scp commands to push the files back to the main repository. This is a bit of a pain (perhaps a complementary svk up --export option?) but works ok.

I've got an instance of websvn running (having been too stupid to configure viewcvs), and am now as happy as larry, or at least will be when I get the ssh keys sorted out.