subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Branko Čibej <br...@e-reka.si>
Subject Re: [Patch] Expression support for SVNPath and SVNParentPath
Date Tue, 13 Nov 2018 16:50:26 GMT
On 2015/02/25 17:35:57, Graham Leggett <minfrin@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


Mime
View raw message