Table of Contents

Create the SVN Repository

All of my SVN repositories were located at /var/my-svn-reps. So when I wasnted to create one more for remote (over the internet) access, the most logical thing to do was to create another one under the same directory. However, realized later that, that might not be a great idea. Since this repository, and others like it I might create, will hang off the internet it is best to locate them outside of this folder structure. So created another regular folder called public inside of this repository folder and then used svnadmin create <repo_name> to create a repository inside this public folder.

Repository listing

root@ub1:/var/my-svn-reps/public# ls -l
total 4
drwxr-xr-x 7 www-data www-data 4096 2009-08-07 22:39 svn-docs

Note that the owner:group is set to apache user

Configure Apache

Added the following configuration to apache:

        <Location />
          DAV svn
          SVNListParentPath On
          SVNParentPath /var/my-svn-reps/public
          AuthType Basic
          AuthName "Subversion repository"
          AuthUserFile /xyz/abc/htpasswd_files/svn.htpasswd
          Require valid-user
        </Location>

This block is inside an almost regular VirtualHost block. The rest of the virtual host block do the neccessary setup for a https enabled subdomain which will be my repository URL.

Here are some additional explanation of the block itself

Here is the full virtual block:

<VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/server.crt
        SSLCertificateKeyFile /etc/apache2/ssl/server.key

        ServerName svn-repo.example.org
        ServerAdmin webmaster@example.org

        <Location />
          DAV svn
          SVNListParentPath On
          SVNParentPath /var/my-svn-reps/public
          AuthType Basic
          AuthName "Subversion repository"
          AuthUserFile /xyz/abc/htpasswd_files/svn.htpasswd
          Require valid-user
        </Location>

        ErrorLog /var/log/apache2/error_svn-repo.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access_svn-repo.log combined
        ServerSignature On

</VirtualHost>

Some of the items here are:

Using it

Checkout the working copy using the url: https://svn-repo.example.org/svn-docs