I had looked at this a while ago but gave up thinking it was too hard, too time consuming. It still is.
To begin with, Subversion, or SVN, is a version control system, typical used by programmers and the like. I have previously used it professionally, and came to the conclusion that I needed to start documenting a website I look after and make changes to pretty often.
I started out installing Subversion:
yum install subversion
This installed the “latest” RPMForge version of Subversion (1.6.12).
To run an SVN repo through Apache, you need to install mod_dav_svn, an Apache module that essentially runs an SVN WebDAV connector. This allows you to reference the SVN repo in your SVN client using http://hostname/svn/reponame – if you configure it like that. This is seemingly easier than configuring SSH+SVN access, in that you don’t have to configure user accounts etc for each user.
Difficulty in this, especially with CentOS 5, is that the mod_dav_svn package, is only available from the CentOS Plus repo… RPMForge don’t ship a package for this.
This isn’t an issue, right? Wrong. The CentOS plus package is versioned the same as Subversion in the CentOS repo, that being 1.4.2.
Since I installed Subversion 1.6.12 from RPMForge repo, I was unable to install mod_dav_svn as the dependency was not able to be met.
yum remove subversionyum clean all
yum install subversion mod_dav_svn –disable-repo rpmforge
Now, create repo (my security context is quite possibly wrong, ignore until I fix it)
useradd -G svn apache
chown svn:svn /home/svn
chmod 770 /home/svn
svnadmin create /home/svn/reponame1
Next, to configure Apache. I created a separate config file, /etc/httpd/conf.d/svn.conf, where I configured the module itself:
From there, I added an SVN alias to one of my vhosts (I use the structure /etc/httpd/conf.d/vhosts/vhostname.tld.conf). The “SVNParentPath” variable points to /home/svn, and the next line allows the web server to produce a directory list for this folder. This will effectively show each of the SVN repo’s under the parent path /home/svn.
All seemed to work well except for a few issues. Permissions need to be modified for the SVN repo, such that the webserver can read it. In my extremely unco security setup, this means I had to give read/write permission to the Apache user. This could be better implemented (the permissions setup I gave earlier in this post are quite possibly better than my original implementation, which didn’t work).