This week, we just had it. The current provider we pay to host our subversion repositories is just unbearable, and so we decided to move (on) to [Unfuddle]. Our reason to move to Unfuddle is that they offer everything we need (and more, e.g. Git), at a pretty good price. I also heard Unfuddle a 100 times when I shopped for a recommendation.
And on top of all the features, they also kick butt at support and for example offered to import our repositories right away. But, has anyone of you tried to dump a subversion repository, ever?
Creating a dump
Being a good user, I rtfm'd first. The manual states to use
svnadmin dump. And apparently it's that easy?
First off, the manual tells me to:
svnadmin /path/to/repo. That didn't work at all though. Instead I had to
svnadmin dump /path/to/repo/.svn. But that didn't work regardless.
After rtfm, there's stfw, and I did that too when I encountered the following issues:
server# svnadmin ./path/to/repo/.svn svnadmin: Expected repository format '3' or '5'; found format '8'
... then I updated my local subversion client, checked out a new copy of the repository, and got this:
server# svnadmin ./path/to/repo/.svn svnadmin: Can't open file './path/to/repo/.svn/format', no such file or directory
There really is no
format file when I check out the same repository with
Apparently a more recent version of Subversion cannot deal older repositories?
Updated, 2009-07-23: Apparently it helps to be awake while doing this. The solution to the problem above is rather simple.
svnadmin does not work on a checkout, but only on the real repository. So in case you are hosting with an external provider such as Unfuddle, Hosted Projects, CVSDude, Assembla and so on, you won't be able to
svnadmin dump on a working copy.
svnadmin & svnsync
Since the current provider charges extra for a backup and the apparently figured out we are trying to save ourselves, I
stfw (again) and came up with these instructions (source) on how to create a local copy of the repository. They assume your username is
svnsync, so in case that's not it, you'll need to adjust it.
svnadmin create repo-local
copy the following script in
if [ "$USER" = "svnsync" ]; then exit 0; fi
echo "Only the svnsync user can change revprops" >&2 exit 1
Run the following command to initialize the sync:
svnsync init --username svnsync file://`pwd`/repo-local http://svn.example.org/repo-online
Run this to create the local copy:
svnsync sync file://`pwd`/repo-local
Local copy, ftw! Now, proceed on to
svnadmin dump ./complete/path/to/repo-local > repo.dmp.
rsvndump [still] to the rescue
Updated, 2009-07-29: Regardless of the above,
rsvndump is still the easiest way to backup a remote repository.
server# rsvndump -u user -p password http://url.to.your/repo > dump * Dumped revision 0. * Dumped revision 1. * Dumped revision 2. * Dumped revision 3. * Dumped revision 4. ...
I know, I know. Not a super-duper post on the usual topics but I thought I'd share it anyway. I'm very much hoping that Google picks it up to save someone else' sanity.
The author does not allow comments to this entry