Re: [RFC] Server Dictated Configuration
From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Wed, 1 Feb 2012 12:38:30 +0000 (GMT)
Hi Paul. Thanks for indulging my enquiries.
Paul Burba wrote:
> Julian Foad wrote:
Note that my use case in this example is about wanting to *remove* one pattern from the default list, in a specific subdirectory.
> On the flip side, if the value of svn:i:ignore on
... then there would be no way to achieve my use case by setting svn:i:ignore on the 'tests' subdirectory, unless you provide some as-yet-unmentioned alternative ...
> then if we change the base value
... so I don't follow what you're saying here.
[...]
But how would that work, concretely? I'm asking because the sort of scheme I had in mind was one where the client would define some syntax to be used inside an svn:i:ignore property value to specify which patterns should be added or removed. I don't see how this revised API could support that scheme recursively. Maybe you have a different scheme in mind as a use case.
It's clearly quite tricky to design a useful inherited properties system. The end result need not be particularly complex, but it is hard to tell by inspection whether a given design proposal would end up meeting real-life needs in a reasonably worthwhile way. If we are going to explore the inherited properties idea further, then
What would the total design look like, for achieving some particular example of non-trivial end-user behaviour that could be facilitated by using inherited properties?
Last time I asked the question, I meant to suggest exploring an inheritable reimplementation of 'ignore patterns' as an example, but the discussion got immediately sidetracked onto how we might implement an ignore-patterns system that extends and is backward compatible with the existing non-inheritable 'svn:ignore' property. That's important, of course, but not a particularly good way to explore the inherited properties design itself. Perhaps it would be less confusing to base an example on some new, made-up feature.
As I noted before, it is not a requirement to be able to use inheritable properties with multi-element values (such as the current multi-line syntax of svn:ignore) and expect to be able to override/add/subtract single elements. We could require, say, that any semantic appending/overriding/subtracting that may be required should be mapped to whole-property operations. Then, for example, an inheritable reimplementation of ignore-patterns could make use of multiple props such as {svn:i:ignore:*.o = yes}, one prop per pattern. A subdirectory could "subtract" a particular pattern by setting {svn:i:ignore:*.o = no}. And to make clear that this last thought is not yet a complete solution, at this point I'd ask how a subdirectory could specify that all ignore patterns should be cleared/disabled without having to know what all the patterns are.
- Julian
|
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.