Subversion backup and restore
This article deals with how to backup your Subversion data and move it to a new machine. For a detailed article on setting up Subversion, see Subversion Setup.
svnadmin dump repo and scp to other machine Do this for each repository you have.
svnadmin dump /path/to/reponame > /tmp/reponame.dump ; scp -rp /tmp/reponame.dump email@example.com:/tmp/
On other machine install subversion
pacman -S subversion
Make sure you set svnserve in /etc/rc.conf Edit the DAEMONS line so it starts on next boot.
DAEMONS=(syslog-ng hotplug !pcmcia network netfs crond sshd svnserve httpd)
Create the corresponding repositories. Do this for each repository you have.
svnadmin create /path/to/reponame
Load svn dump into new repo on new machine. Do this for each repository you have.
svnadmin load /path/to/reponame < /tmp/repo1.dump
Setting Permissions.. CRUCIAL This is the most common mistake when moving an svn repo. Do this for each repository you have.
chown -R svn:svnusers /path/to/reponame ; chmod -R g+w /path/to/reponame/db/
bash-2.05b# ls -l
Ok these repos should be all set and ready to rock.. however using svn+ssh:// will not work..
check your ENV like:
check where the svnserve binary is located:
# which svnserve /usr/local/bin/svnserve
ok our wrapper is going to have to fall in PATH prior to this location.. /sbin is a good place seeing its our 1st exec path on the system as root.
touch /sbin/svnserve ; chmod 755 /sbin/svnserve
now edit it to look like so:
bash-2.05b# cat /sbin/svnserve #!/bin/sh # wrapper script for svnserve umask 007 /usr/local/bin/svnserve -r /path/to "$@"
You do not need to do: :/path/to/reponame.... this is the big trick here folks.
Start svnserve with new wrapper script like so:
/sbin/svnserve -d ( start daemon mode )
check it with ps:
# ps auxww
we can also check the perms for remote users like this:
cdowns:~ ~$ svn ls svn+ssh://server.domain.com:/reponame ++server.domain.com++ dev/ qa/ release/ cdowns:~ ~$