Migrating a Subversion Repository

When Subversion 0.29 hit the Debian archives, there was a Subversion database schema change, and new clients would no longer work with the old repository.

The instructions about what to do under these circumstances were a bit more hidden than I would have wanted when I suddenly discovered that my repository wasn't working. However, fixing the situation wasn't too difficult. Basically, I followed instructions in the Debian TODO file and looked in the svnbook in the "Migrating a Repository" section.

Thankfully, the well-designed Subversion dump/load format is schema-agnostic. To convert to the new schema, you dump your old database with the old svnadmin, move off the repository and then create the repository again and load the dump into it.

   # svnadmin dump /opt/public/svn/software > software.dump
   # mv /opt/public/svn/software /opt/public/svn/software-old
   # svnadmin create /opt/public/svn/software
   # svnadmin load /opt/public/svn/software < software.dump
   # chown -R svn:public /opt/public/svn
   # chmod -R g+w /opt/public/svn

Apparently, the Debian packages come with an "old-version" svnadmin command, so you can do this even after you've upgraded.

   -rwxr-xr-x    1 root     root        87544 2003-09-30 08:48 /usr/bin/svnadmin*
   -rwxr-xr-x    1 root     root      1389784 2003-09-27 21:34 /usr/bin/svnadmin-0.26.0-1*
   -rwxr-xr-x    1 root     root      1467736 2003-09-30 08:52 /usr/bin/svnadmin-static*

Also, note that this dump/load functionality has other uses, such as loading one repository from another:

   svnadmin dump /opt/public/svn/software | svnadmin load /opt/public/svn/software2

or even removing items permanently from a repository.

SubversionMigrating (last edited 2008-07-09 06:21:37 by localhost)