Subversion backup and restore

From ArchWiki
Revision as of 11:23, 19 June 2012 by Fengchao (talk | contribs) (Style clean up.)
Jump to: navigation, search

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements.Tango-edit-clear.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk: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

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/

Sample Permissions:

bash-2.05b# ls -l 

Ok these repos should be all set and ready to rock.. however using svn+ssh:// will not work..

Note: we have to have a wrapper written for svnserve.. PLEASE FOLLOW CLOSELY HERE

check your ENV like:

 bash-2.05b# env 

check where the svnserve binary is located:

 # which 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.

create wrapper:

touch /sbin/svnserve ; chmod 755 /sbin/svnserve 

now edit it to look like so:

 bash-2.05b# cat /sbin/svnserve 
# wrapper script for svnserve
umask 007
/usr/local/bin/svnserve -r /path/to "$@"
Note: See the -r /path/to ?? well this is what makes use of the svn co svn+ssh:// ( SEE THIS :/reponame ).. this sets root PATH.

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://
cdowns:~ ~$

See Also