Mark Phippard wrote:

> Julian Foad wrote:
>>  For ignores, I have an alternative proposal.  Instead of adding a second 
>> property name, may I suggest keeping the existing property name and
>> extending the syntax of its value.
>> 
>>  Currently
>> 
>>    svn:ignore =
>>      Makefile
>>      *.obj
>> 
>>  applies those two patterns to the immediate children only.
> 
> I do not agree with this one.  I think you are overlooking that the
> the inheritable properties are merged together with closest property
> having precedence.

I'm not sure what you're saying here.  The new client-side API [1] for 
retrieving a given property name will return a list of all the values set on 
the various parents, and it's then up to the caller to decide how to merge them.

[1] <http://wiki.apache.org/subversion/InheritedProperties#API_Changes>

>  I do not see how you can do that with the existing
> svn:ignore property in any way that is useful without changing the
> behavior.

Do it like this:

  inh_ignores = get_property(path, "svn:ignore", include_inherited=True)
  # inh_ignores is a mapping from "path-on-which-it's-set" to "pattern-list".
  sort inh_ignores by "path-on-which-it's-set", in root-to-leaf order.
  final_ignore_patterns = (an empty set)
  for each pattern-list in inh_ignores:
    for each pattern in pattern-list:
      final_ignore_patterns.add_or_replace(pattern)


>  I like the idea of a new property for this.

Why?

- Julian

Reply via email to