Generating empty/padding revisions in an SVN dump

September 12th, 2011

I’ve previously had an SVN repository filled with a mixture of projects that I’m now splitting out into separate repositories, so am in the process of creating various scripts based on “svnadmin dump”/”svnadmin load” to process repositories.
Along the way, I had a need to dump only selected revisions from a repository, using a command such as:

svnadmin dump -r 1234:HEAD /path/to/repo > repo.dump

However, when this is loaded back into a new repository (“svnadmin load mynewrepo < repo.dump”), the revisions are renumbered starting at 1, so that what was revision 1234 becomes revision 1. This is undesirable, as I have existing bugs and changelogs referring to SVN revision numbers, so I created a small script (svn-generate-empty-revisions) to create a number of empty revisions.

In use, it’s most useful to splice its output into the start of an SVN dump, for example:

svnadmin dump -r 1234:HEAD /path/to/repo > repo.dump
# Extract the first few lines of the dump, which contain metadata
head -n 4 repo.dump > repo-padded.dump
# Splice in some empty "padding" revisions to preserve revision numbering
# Note that the first revision is 1234, so we want 1233 empty revisions at start
./svn-generate-empty-revisions.sh 1233 >> repo-padded.dump
# Add the rest of the original repository dump to the file
tail -n +4 repo.dump >> repo-padded.dump

QEMU: “Could not open disk image”

April 6th, 2011

Hit this strange problem today on RHEL5.6. Saw a QEMU disk image (qcow2 format; let’s call it “image2”) which was a copy-on-write link to a base OS image (let’s call it “image1”). Trying to start a KVM virtual machine using it resulted in the error “Could not open disk image”. After checking various things including that both images were OK (“qemu-img” check, loop mount) permissions, SELinux etc., it turned out that what this error actually means (in this case) is “You are using a copy-on-write image with a backing file of format ‘vpc’. This doesn’t work”. So, “qemu-img convert” solved the problem.

Good example of some poor error reporting…maybe it will help someone else out.