Difference between revisions of "Subversion backup and restore"

From ArchWiki
Jump to: navigation, search
m (Style clean up.)
(fix double redirect)
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Category:Version Control System]]
#REDIRECT [[Subversion]]
{{Poor writing}}
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]].
== Instruction ==
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 user@server.domain.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.. <b>CRUCIAL</b> 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:
{{bc|bash-2.05b# ls -l | grep svn
drwxrwxr-x  7 svn  svnusers      512 Apr 27 15:06 reponame1
drwxrwxr-x  7 svn  svnusers      512 Apr 27 15:06 reponame2
drwxrwxr-x  7 svn  svnusers      512 Apr 27 15:06 reponame3
bash-2.05b# ls -l reponame1/ | egrep -i "db"
drwxrwsr-x  2 svn  svnusers  512 Apr 27 15:07 db
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:
{{bc| bash-2.05b# env | egrep "^PATH="
check where the svnserve binary is located:
{{bc| # 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:
{{bc| 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://server.domain.com:/reponame ( 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:
{{bc| # ps auxww | grep svn
root  66668  0.0  0.1  3608 1868  ??  Is  12:25AM  0:00.00 /usr/local/bin/svnserve -r /path/to -d
we can also check the perms for remote users like this:
{{bc|cdowns:~ ~$ svn ls svn+ssh://server.domain.com:/reponame
cdowns:~ ~$
== See Also ==
* http://svnbook.red-bean.com/en/1.1/svn-book.html#svn-ch-9-sect-2.2-re-load
* http://subversion.tigris.org/

Latest revision as of 13:24, 19 February 2016

Redirect to: