1. Install requirements
zypper install subversion subversion-server apache2 apache2-doc apache2-prefork libapr1 libapr-util1 libneon libneon-devel
2. Create account
groupadd -r svn useradd -r -g svn -d /home/svn -s /bin/false svn
3. Add Apache2 module
a2enmod dav a2enmod dav_svn a2enmod authz_svn
4. Configure Apache
vi /etc/apache2/conf.d/subversion.conf <IfModule mod_dav_svn.c> <Location /svn> Order allow,deny Allow from all DAV svn SVNParentPath /home/svn/repos SVNListParentPath OnAuthType Basic AuthName "Subversion access requires login." AuthUserFile /home/svn/users/svn_passwd Require valid-user AuthzSVNAccessFile /home/svn/users/svn_acl </Location> </IfModule>
5. Prepare directories
mkdir -p /home/svn/repos mkdir -p /home/svn/users chown root:www /home/svn/repos chown root:www /home/svn/users chmod 750 /home/svn/repos chmod 750 /home/svn/users
6. Add SVN user
touch /home/svn/users/svn_passwd chown root:www /home/svn/users/svn_passwd chmod 640 /home/svn/users/svn_passwd htpasswd2 /home/svn/users/svn_passwd user01
7. Create SVN access list
vi /home/svn/users/svn_acl [groups] admins = root, user01 web-developers = user01, user03 everyone = user01, user02, user03 [/] @admins = rw [www.myweb.com:/] user01 = rw user03 = r chown root:www /home/svn/users/svn_acl chmod 640 /home/svn/users/svn_acl
8. Create repogitory
svnadmin create /home/svn/repos/www.myweb.com chown -R wwwrun:www /home/svn/repos/*/{db,locks} chown wwwrun:www /home/svn/repos/*
9. Apply skin of directory index(3rd-party XSLT)
10. Script for new repogitory (tip)
vi ~/bin/create_repo #!/bin/bash svnuser=root svnpass=rootpass if [ -z "$1" ] then echo "Usage: `basename $0` [repository name]" exit 1 fi svnadmin create /home/svn/repos/$1 chown wwwrun:www /home/svn/repos/$1 chown -R wwwrun:www /home/svn/repos/*/{db,locks} svn mkdir -m "initial structure" -q http://$svnuser:$svnpass@127.0.0.1/svn/$1/branches http://$svnuser:$svnpass@127.0.0.1/svn/$1/tags http://$svnuser:$svnpass@127.0.0.1/svn/$1/trunk exit 0
♦ References