[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [RFC] Server Dictated Configuration

From: Thomas ┼kesson <thomas_at_akesson.cc>
Date: Sat, 28 Jan 2012 13:01:31 +0100

Hi all,

First of all, thanks for working on server dictated config and inherited properties. We use Subversion as the core of a Document CMS (with focus on structured XML authoring). Some of the components we develop are available as open-source: http://repossearch.com/

We would be absolutely thrilled to see inherited properties implemented! There are many potential use cases for us, configuration of our services being one of the most imminent. Our primary input to this thread is that we would very much like inherited properties to be a generic feature accessible to other uses than core Subversion, preferably with API-support.

On 28 jan 2012, at 10:30, Ivan Zhakov wrote:

>>
>>
>> Are you suggesting that any property is inheritable simply by asking
>> it to be so? What we are talking about here is a way to differentiate
>> inheritable vs. non-inheritable properties (or as Johan put it:
>> "discern inheritable props from normal ones").
>>
> Yes, that's exactly what I proposed. But I'm fine with idea
> differentiate properties behavior using dedicated namespaces (svn:i
> and svn:inheritable:).
>

While following the thread, I have debated this with myself over the last few days and each approach has advantages.

Consumer inheritance (the property consumer decides which are inheritable)
 + Less effort to implement
 + No difficulty defining what makes a property inheritable
 - Access control issues/regression. Personally, I would be ok with a regression along the lines that a user with access further down the tree is allowed to read properties on the parent directories (the user already "knows about" them from the URL). The only users objecting to that regression are those that store secret information in properties on directories (rare?). The bigger problem is that it is counter-intuitive behaviour to disclose those properties.
 - Performance and difficulty for the consumer (but more flexibe).

Defined inheritance (the server decides)
 - More effort to implement.
 - Needs a definition of which properties are inheritable. I would suggest a server config (regex perhaps) that defaults to matching "*:inherit:*", potentially limiting the first * to a single prefix (disallow ':'). If someone has used xyz:inherit:* the server can be configured more restrictively with "svn:inherit:*".
 - Less flexible with regards to different merging/override behaviour when property is defined on multiple directories.
 + Defined, and fairly intuitive access control behaviour.
 + Possibility to provide better APIs

I am fine with either way, but I am swaying towards "defined inheritance" mainly because of the last item, "better APIs". Both the WC and the server could make it much simpler for the consumer to read and set inherited properties. Specifically, the server is in a much better position to efficiently (fewer round-trips) respond to proplist AND provide a single proplist containing both regular and inherited properties.

/Thomas ┼.
Received on 2012-01-30 07:47:00 CET

This is an archived mail posted to the Subversion Dev mailing list.