
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
264
|
Appendix C: WebDAV and Autoversioning
actually be quite difficult to implement, since Subversion uses the copy-modify-
merge model.
*
In Apache httpd-2.0, mod_dav supports the LOCK method by tracking locks in a pri-
vate database, assuming that the provider is willing to accept them. In Apache httpd-
2.1 or later, however, this locking support has been broken into an independent
module, mod_dav_lock. It allows any mod_dav provider to take advantage of the
lock database, including mod_dav_svn, even though mod_dav_svn doesn’t actually
understand locking.
Confused yet?
In a nutshell, you can use mod_dav_lock in Apache httpd-2.1 (or later) to create the
illusion that mod_dav_svn is honoring
LOCK requests. Make sure mod_dav_lock is
either compiled into httpd, or being loaded in your httpd.conf. Then simply add the
DAVGenericLockDB directive to your Location like so:
<Location /repos>
DAV svn
SVNPath /absolute/path/to/repository
SVNAutoversioning on
DavGenericLockDB /path/to/store/locks
</Location>
This technique is a risky business; in some sense, the mod_dav_svn is now lying to
the WebDAV client. It claims to accept the
LOCK request, but in reality the lock isn’t
being enforced at all levels. If a second WebDAV client attempts to
LOCK the same
resource, then mod_dav_lock will notice and correctly ...