top of page
Troy Web Consulting Logo

Currently Hiring! Visit our Careers Page

Writer's pictureTroy Web Consulting

How to Restore from SVNdump (or SVN Export)

If you have ever had to move svn from one server to another, you were probably given a svndump file that contains all revision history. If you are like me, you favor a GUI over command-line. Unfortunately, most GUIs don’t support a load or restore. So for ease of future reference, here is how to restore from a svndump file (sometimes called an svn export).

First step. Fire up terminal.

Note: You can find all of this info in the book Version Control with Subversion at http://svnbook.red-bean.com/


Get the svndump

You’ll probably get a svndump file from your svn host. If you already have the file you can skip this section.

If you need to create a svndump file you can do so with svnadmin dump. If you type the following into terminal, you’ll create the file repo.svndump. This file will contain a dump of your entire repository history.

$ svnadmin dump /path/to/repo > repo.svndump

Example: $svnadmin dump /www/repos/helloworld > helloworld.svndump


Create a new empty repository

In order to restore the repository that was just dumped, you need to create a new empty repository. Here you’ve got a couple of options. Most svn GUI clients allow you to create a new repository. You can either go that route, or create the new repository via the command-line like so.

$ svnadmin create /path/to/new/repository

Example: $ svnadmin create /www/helloworld


Load (restore) the svndump

Once you’ve got a new empty repository, you can load the svndump file. Here’s where most svn GUI clients let you down. In most cases, your only option is command-line.

$ svnadmin load /path/to/new/repository < /path/to/svndump

Example: $ svnadmin load /www/helloworld < /temp/helloworld.svndump

Let that run until you see the command prompt again, and your new repository will be fully loaded.


Sync with a remote repository

If you need to restore to a new remote repository, you will need to use svnsync. I have only had success with this if the remote repository is new (empty). Here is the command-line sync.

$ svnsync init --username YOUR_REMOTE_REPO_USERNAME REMOTE_URL SOURCE $ svnsync sync --username YOUR_REMOTE_REPO_USERNAME REMOTE_URL

Example: $ svnsync init --username troyweb http://mysvnhost.com/helloworld file:///www/helloworld $ svnsync sync --username troyweb http://mysvnhost.com/helloworld

bottom of page