The Apache HTTP Server is a “heavy-duty” network server that Subversion can leverage. Via a custom module, httpd makes Subversion repositories available to clients via the WebDAV/DeltaV protocol, which is an extension to HTTP 1.1 (go to http://www.webdav.org/ for more information). This protocol takes the ubiquitous HTTP protocol that is the core of the World Wide Web, and adds writing—specifically, versioned writing—capabilities. The result is a standardized, robust system that is conveniently packaged as part of the Apache 2.0 software, supported by numerous operating systems and third-party products, and doesn’t require network administrators to open up yet another custom port.[44] While an Apache-Subversion server has more features than svnserve, it’s also a bit more difficult to set up. With flexibility often comes more complexity.
Much of the following discussion includes references to Apache configuration directives. While some examples are given of the use of these directives, describing them in full is outside the scope of this chapter. The Apache team maintains excellent documentation, publicly available on their web site at http://httpd.apache.org. For example, a general reference for the configuration directives is located at http://httpd.apache.org/docs-2.0/mod/directives.html.
Also, as you make changes to your Apache setup, it is likely that
somewhere along the way a mistake will be made. If you are not already
familiar with Apache’s logging subsystem, you should become aware of it.
In your httpd.conf file are
directives that specify the on-disk locations of the access and error logs
generated by Apache (the CustomLog
and
ErrorLog
directives, respectively).
Subversion’s mod_dav_svn
uses Apache’s error logging interface as well. You can always browse the
contents of those files for information that might reveal the source of a
problem that is not clearly noticeable otherwise.