Serving svn with httpd on OS X 10.9

How to set up Apache httpd with svn on OS X 10.9, Mavericks, and Xcode 5.

This article shows how to set up Apache httpd with svn on OS X 10.9, Mavericks, and Xcode 5.

Previously I documented how to set up Subversion (SVN) and Apache’s web server httpd on Mac OS X 10.8, Mountain Lion.

Since then Apple has released OS X 10.9 and the steps to get httpd and svn working together have changed. Let’s step through restoring svn over http on your Mac server.

Essentials

We are going to use homebrew to get the latest subversion libraries. homebrew is an excellent command line package manager. If you have not yet discovered homebrew’s usefulness, today’s set of steps will be the start of a revelation.

As before, be sure to install the latest Xcode and the Command Line Tools.

Download and Build Subversion

Download Subversion 1.8.5 and extract the archive’s contents:

curl 'http://archive.apache.org/dist/subversion/subversion-1.8.5.tar.bz2' > ~/Downloads/subversion.tar.bz2
cd ~/Downloads
tar -xjf subversion.tar.bz2
cd subversion-1.8.5

Configure and make Subversion, but do not install:

./configure --with-apxs=/usr/sbin/apxs
make

Copy the Apache httpd modules to the appropriate folder. The location and purpose of this folder is explained in the earlier instructions. I deliberately keep custom modules and configurations outside of Apple’s standard locations; Apple tends to overwrite customisations during upgrades and updates.

cp subversion/mod_authz_svn/.libs/mod_authz_svn.so /Volumes/Documents/projects/apache2/.
cp subversion/mod_dav_svn/.libs/mod_dav_svn.so /Volumes/Documents/projects/apache2/.

Install Subversion’s Libraries

For these two Apache httpd modules to link properly at runtime, we need a handful of additional Subversion libraries. Let’s use homebrew to install these:

brew install subversion

Note: You will need to install homebrew before this command works.

Test httpd’s Configuration

Referring to the Subversion guide, load these two modules and set up the svn configuration you need. The two lines to load the modules from the custom folder are:

LoadModule dav_svn_module /Volumes/Documents/projects/apache2/mod_dav_svn.so
LoadModule authz_svn_module /Volumes/Documents/projects/apache2/mod_authz_svn.so

Before restarting Apache httpd, test the configuration file works. Any linking problems with the new modules will be reported with this step - assuming your configuration brings in the new modules:

apachectl -f /etc/apache2/httpd.conf -t

If all goes well, you can now restart Apache httpd and resume serving svn over http and https.

sudo apachectl restart