Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "InheritedProperties" page has been changed by pburba:
http://wiki.apache.org/subversion/InheritedProperties?action=diff&rev1=11&rev2=12

Comment:
Adjust the 'Inheritance Rules' section to reflect the recent suggested API 
changes, i.e. a path can both have an explicit property and inherit the same 
property.

    [danielsh] Using the 'svn:inheritable:' namespace precludes a property from 
being both inheritable and ${some_future_semantics}, since a property name 
cannot be simultaneously in the 'svn:inheritable:' namespace and in the 
'svn:{some_future_semantics}:' namespace.
  }}}
  == Inheritance Rules ==
- Inheritance will be very similar to the current svn:mergeinfo inheritance 
model.  For a given inheritable property 'svn:inheritable:X':
+ Inheritance will be more flexible than the current svn:mergeinfo inheritance 
model.  For a given inheritable property 'svn:inheritable:X':
  
-  1. A path '''''with''''' svn:inheritable:X' explicitly set on it never 
inherits that property (i.e. a path can only inherit a property it doesn't have 
set on itself).''''' '''''
-  1. A repository path@REV '''''without''''' the 'svn:inheritable:X' property 
explicitly set on it (we'll refer to this as the 'child' path from here on) may 
inherit the property from the path's nearest path-wise ancestor@REV with the 
'svn:inheritable:X' property explicitly set on it (we'll refer to this as the 
'parent' path).
+  1. A path may have the svn:inheritable:X' '''explicitly''' set on it (i.e. 
exactly how versioned properties work today). ''''' '''''
+  1. A '''repository''' path@REV (we'll refer to this as the 'child' path from 
here on) may inherit the value of the svn:inheritable:X property from the 
path's nearest path-wise ancestor@REV with the 'svn:inheritable:X' property 
explicitly set on it (we'll refer to this as the 'parent' path).
-  1. A '''''working copy''''' child path '''''without''''' the 
'svn:inheritable:X' property explicitly set on it may inherit the property from 
the path's nearest path-wise ancestor in the working copy.
+  1. A '''working copy''' child path may inherit the svn:inheritable:X 
property from the path's nearest path-wise ancestor in the working copy.
    * For working copies with no switched subtrees, this inheritance can occur 
from any parent path up to the root of the working copy.
    * If the path is located within a switched subtree then the inheritance can 
occur up to the root of the switched subtree.
    * Unlike svn:mergeinfo and like tsvn:auto-props, inheritance across 
mixed-revision boundaries in the working copy is allowed.
@@ -74, +74 @@

      [1] This particular principle for how we treat the working version of a 
WC is something I've had in mind for a long time and I think it can be very 
useful in guiding how we design several aspects of WC behaviour, not just for 
inheritable properties.<<BR>>
      [2] When I say 'working node' I mean the 'topmost' version of the node in 
the WC, no matter whether that is different from or the same as the base 
version.
  }}}
+  1. Note an important implication of #2 and #3: Unlike svn:mergeinfo, a child 
path with the svn:inheritable:X property explicitly set on it can also inherit 
the svn:inheritable:X property from a parent.  Our default approach will be for 
child values to simply override parent values (exactly how svn:mergeinfo works 
today).  However, the APIs will support getting both explicit and/or  inherited 
property values.  So it's possbile that child values might append to parent 
values or more complex merging of properties may be performed based on the 
specific property.
   1. Unlike svn:mergeinfo, the property value a child inherits from a parent 
will not be modified based on the path-difference between the parent and child. 
 The property value on the parent is the value the child will inherit.  There 
are no plans to provide an API which reveals the specific parent path a child 
inherits from.
   1. While setting inheritable properties on a file has no meaning from the 
standpoint of inheritance, the property still applies to the file itself.  Thus 
there will be no prohibitions on setting inheritable properties on files.
   1. If a child path which inherits a property is copied, the inherited  
properties are not copied with it.  The new destination path inherits  
properties from its new parents.  This means that depending on the copy  
destination the new path may or may not inherit the same property, and  even if 
it does, it may inherit a different value. This puts the onus on  users to set 
their inheritable properties as close to the root of the  repository tree as 
makes sense for the property in question.  Have a  property you want to apply 
to the whole repository?  Set it on the root.   Want it to apply only to a 
single project?  Set it on the root of the  project. Note that if a path has an 
inheritable property '''''explicitly''''' set on it, the property is copied 
just like any other versioned property.

Reply via email to