On 25.02.2015 17:35, Graham Leggett wrote: > Hi all, > > The SVNParentPath directive allows a set of repos to be placed at an URL, but > if you have more complex needs such as providing many customers (with > separately mounted home directories) access to many repositories, this may > not be enough. > > The attached patch brings httpd v2.4 expression support to the SVNPath and > SVNParentPath directories through the addition of an optional second > parameter, which allows you to do stuff like this: > > <LocationMatch ^/svn/(?<CUSTOMERNAME>[^/]+)/> > > # customer has their own partition, inside is an “svn” directory with > repos in it > SVNParentPath /home/partition %{env:MATCH_CUSTOMERNAME}/svn > > # customer repos are protected by this group > require ldap-group > cn=https://svn.${SERVER_SUFFIX}/%{env:MATCH_CUSTOMERNAME},ou=svn,ou=Groups,o=Somewhere > > </LocationMatch> > > Or perhaps this based on the HOST header (and a wildcard SSL cert): > > <Location /> > > # customer has their own partition, inside is an “svn” directory with > repos in it > SVNParentPath /home/svn %{HTTP_HOST} > > # customer repos are protected by this group > require ldap-group cn=%{HTTP_HOST},ou=svn,ou=Groups,o=Somewhere > > </Location> > > Both the SVNPath and SVNParentPath directives now take an optional second > argument, containing a string expression to be evaluated and added to the end > of the primary path. If the expression evaluates to a path above the first > argument, an error will be returned. > > The patch was developed against trunk, and applies clean to v1.7.19.
I think this would be a nice feature to have in mod_dav_svn. It is, IMO, a better approach than the one currently implemented on the SVNParentPathTemplate branch, even if it is limited to httpd-2.4+. Graham, I've created a branch for this: ^/subversion/branches/mod-dav-svn-expressions you can commit your patch there, if you will; you have the necessary karma since Subversion-the-project uses the universal-commit bit. Once that's done, we'll want to tweak our test suite so that we can test the new feature, and probably update docs and so on. -- Brane