On 17.11.2011 11:40, David Chapman wrote:
> On 11/16/2011 11:08 PM, Sergey Skvortsov wrote:
>> On 16.11.2011 19:56, Stefan Sperling wrote:
>>> On Wed, Nov 16, 2011 at 06:37:39PM +0400, Sergey Skvortsov wrote:
>>>> s/"svn update"/"svn commit"/
>>>>
>>>> On 16.11.2011 18:31, Stefan Sperling wrote:
>>>>> On Wed, Nov 16, 2011 at 02:43:17PM +0400, Sergey Skvortsov wrote:
>>>>>> Configuration for Apache:
>>>>>>
>>>>>> <Location /svn>
>>>>>> DAV svn
>>>>>> SVNParentPath /usr/home/svn
>>>>>> SVNListParentPath on
>>>>>> </Location>
>>>>>>
>>>>>> <Location /svn/foo>
>>>>>> DAV svn
>>>>>> SVNParentPath /usr/home/svn/foo
>>>>>> SVNListParentPath on
>>>>>> </Location>
>>>>>
>>>>>> [Wed Nov 16 10:32:58 2011] [error] [client 10.10.10.10]
>>>>>> (20014)Internal error: Can't open file
>>>>>> '/usr/home/svn/foo/foo/format': No such file or directory
>>>>>
>>>>> You are nesting locations. This isn't a valid configuration because it
>>>>> leads to ambiguity when splitting a URL into the part which is outside
>>>>> of the repository and the part which is inside the repository.
>>>>
>>>> Why this configuration is not valid?
>>>
>>> Before Subversion gets called, Apache HTTPD decides which Location
>>> block gets to handle a request. Subversion has no control over this
>>> decision.
>>> Note that Apache HTTPD looks only at URLs. It has no idea and does
>>> not care
>>> whether or not there is a Subversion repository anywhere within the URL
>>> http://svn.example.com/svn/foo/bar/baz
>>> With your configuration the URL has two possible repositories:
>>> http://svn.example.com/svn/foo
>>> http://svn.example.com/svn/foo/bar
>>> So how is Apache HTTPD supposed to tell which of your Location blocks
>>> should handle requests for the URL
>>> http://svn.example/com/svn/foo/bar/baz?
>>> Should<Location /svn> handle it or should<Location /svn/foo> handle it?
>>
>> Of course "/svn/foo".
>
> Really? And what if you check out a copy of
> http://svn.example.com/svn/foo and create a directory named "bar" in it?
Please, re-read initial example.
"/svn/foo" is not a repo. It is just directory containing repos. And
"/svn" too.
You can not checkout "/svn/foo" or "/svn".
> Are you expecting Apache or Subversion to notice that this is the path
> to another repository and thus ban creation of the new directory?
>
> What if the repository http://svn.example.com/svn/foo already has a
> directory named "bar" in it when you first move the child repository
> into /svn/foo/bar?
>
> I could go on, but the possibilities for ambiguity are endless. Don't
> nest repositories.
Again, there are no nested repositories.
I am talking about broken SVNParentPath behaviour.
--
Sergey Skvortsov
mailto: skv_at_protey.ru
Received on 2011-11-17 08:46:43 CET