On 2015/02/25 17:35:57, Graham Leggett <minf...@sharp.fm> 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>
I'm trying to resurrect this branch and have hit a bit of a snag. I modified the HTTPd configuration we use for our automated tests so that it uses a LocationMatch with a match group and a suffix expression in SVNParentPath. However, the server is now crashing because dav_svn__get_root_dir() no longer returns a valid path. The configuration looks like this: <LocationMatch "^/svn-test-work/(?<REPOSITORIES>repositories)"> DAV svn ... SVNParentPath "/dev/subversion/tests/cmdline/svn-test-work" "%{env:MATCH_REPOSITORIES}" ... </LocationMatch> and the parent path appears to be computed correctly, however, dav_svn__get_root_dir() is returning the actual regular expression from the LocationMatch line, i.e., it's returning ^/svn-test-work/(?<REPOSITORIES>repositories) instead of /svn-test-work/repositories which is the actual matched location, so of course later on svn_fspath__join() asserts because the former is not a canonical path. Graham, I presume that you tested this when you committed the original patch ... would you mind taking a look at the current code on the mod-dav-svn-locations branch? I don't think I changed anything significant when I was reworking the code, and I'm a bit lost in the expression stuff. This is the current diff from trunk: svn diff http://svn.apache.org/repos/asf/subversion/trunk@r1846487 \ http://svn.apache.org/repos/asf/subversion/branches/mod-dav-svn-expressions (I pegged the trunk revision because that's when the latest merge to the branch was made.) -- Brane