Friday, August 1, 2008

Subversion, Vendor Branches, and svn-load

A while back, Ross Burton wrote an excellent tutorial for using vendor branches in subversion. I used this tutorial, or one like it, about a year ago when adding a vendor branch to one of my own projects, jpilot-icalendar.

A few days ago, I needed to update jpilot-icalendar with a new vendor version. I couldn't remember exactly how to do that, so I googled "subversion vendor branches" and found Ross's tutorial. As I was going through the steps, I discovered that svn_load_dirs was no longer installed on my system. I assumed this was a casualty of my recent hard drive failure and started looking for the package it belonged to so I could reinstall it. After a bit of digging, I found to my horror that svn_load_dirs had been removed from the Debian subversion-tools package. There was mention of an svn-load command, which "should function as a drop in replacement."

I couldn't find any documentation on svn-load, so I setup a test subversion repository to test it. I am happy to report that it does seem to be a drop in replacement for svn_load_dirs, at least to the extent that I used it.

Here is how I originally imported the vendor source:

$ svn import libical-0.23 \ \
-m "Importing libical-0.23"

$ svn copy \ \ \
-m "tagging libical-0.23"

$ svn copy \ \ \
-m "bringing libical-0.23 into main branch"

Then I updated to libical-0.24-RC4:

$ svn_load_dirs \ \
-t 0.24-RC4 current libical-0.24

$ svn merge \ \ \

That brings me up to a few days ago, when I wanted to upgrade to libical 0.31. Here is how I did that:

$ svn-load \ \
-t 0.31 current libical-0.31

$ svn merge \ \ \

As promised, the svn-load command was a drop-in replacement for svn_load_dirs.

Edited 08/02/2008 11:11AM EST:Fixed layout again, after reading this handy guide.

No comments: