This document shows how to setup a subversion server on a Debian based system.
Required packages: subversion apache2 libapache2-svn
Required: Apache with SSL
mkdir /home/svn svnadmin create /home/svn/first_repo svnadmin create /home/svn/second_repo
/etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /home/svn
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repositories"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Disable anonymous access by removing the two LimitExcept lines
mkdir /home/svn svnadmin create /home/svn/the_repository
/etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNPath /home/svn/the_repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Disable anonymous access by removing the two LimitExcept lines
addgroup subversion adduser www-data subversion chown -R www-data:subversion /home/svn chmod -R g+rws /home/svn
Svnbook
mod_authz_svn can slow down everything!
/etc/subversion/dav_svn.authz
# give everybody read access [/] * = r # give harry full read and write access to this repository, but sally only read access [first_repo:/] harry = rw sally = r # give sally write access only to the 'testing' subdir [first_repo:/testing] sally = rw
/etc/apache2/mods-available/dav_svn.conf
AuthzSVNAccessFile /etc/subversion/dav_svn.authz
$config->parentPath('/home/svn');
$config->addRepository('repository', 'file:///home/svn/the_repository');
Creating a backup of an entire repository while preserving the version history is not a complicated task. There are two different ways: either directly with svnadmin or with the rsvndump tool. The first one can only be done by someone who can access the server via SSH, whereas rsvndump can be used by anybody.
svnadmin dump /path/to/repository > repo.svn_dump
rsvndump https://the.url.com/svn/repository > repo.svn_dump
svnadmin create /path/to/repository svnadmin load /path/to/repository < repo.svn_dump
Don't forget to set permissions!