You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by Apache subversion Wiki <co...@subversion.apache.org> on 2012/02/07 11:00:13 UTC

[Subversion Wiki] Trivial Update of "InheritedProperties" by JulianFoad

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 JulianFoad:
http://wiki.apache.org/subversion/InheritedProperties?action=diff&rev1=25&rev2=26

Comment:
Switch the terminology in my note from 'working version' to 'actual version'.

    * If a working copy child path doesn't find a parent with 'svn:inheritable:X' that it can inherit from before it reaches the working copy (or switched subtree) root, then it may inherit the property from the inherited properties cache (see below).
    {{{#!wiki note
      [JAF] What is the unifying principle behind the set of rules?  For example, a principle could be:<<BR>>
-     "Inheritance within a WC is based on inheritance within a single revision of the tree structure.  Thus, a WC base node inherits from its repository parent in its repository revision, no matter whether that is present in the WC.  The working version of the WC tree is treated as a single revision: an as yet unnumbered prototype for a revision that might be committed into the repository (or might not)[1].  Thus, a WC working node[2] inherits from the parent node that it would have in the repository if the current WC were committed in full."<<BR>>
+     "Inheritance within a WC is based on inheritance within a single revision of the tree structure.  Thus, a WC base node inherits from its repository parent in its repository revision, no matter whether that is present in the WC.  The 'actual' version of the WC tree is treated as a single revision: an as yet unnumbered prototype for a revision that might be committed into the repository (or might not)[1].  Thus, a WC actual node[2] inherits from the parent node that it would have in the repository if the current WC were committed in full."<<BR>>
-     I think that principle would match all your rules if the 'mixed-revision' rule applies to working nodes but not base nodes.<<BR>>
+     I think that principle would match all your rules if the 'mixed-revision' rule applies to actual nodes but not base nodes.<<BR>>
-     [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>>
+     [1] This particular principle for how we treat the 'actual' tree 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.
+     [2] By 'actual' version I mean the 'topmost' (i.e. MAX(op_depth)) version of the node in the WC, no matter whether that is different from or the same as the base version.
  }}}
    {{{#!wiki note
      [PTB] JAF - I was envisioning a much simpler principle: Inheritance within the WC is within the actual tree[1].  This is easy for a user to explain and easy to understand.  For example, no matter what the state of the WC a user can always say, "I see that 'my-WC/trunk' has the inheritable property 'InhPropName=PropVal'.  That means that 'my-WC/trunk/README' inherits 'InhPropName=PropVal'.  That makes sense!"  If I understand correctly what you suggest, a user could face the case where a child path inherits a property value that differs from its actual WC parent's value (if it inherits anything at all).  That strikes me as a recipe for user confusion.
@@ -86, +86 @@

  A child path that inherits a property from its parent may not have ready access to that parent in the working copy (e.g. the root of the working copy is a subtree of the parent path).  To ensure that traditionally disconnected operations (i.e. those that require no access to the repository, like 'svn add') remain disconnected, we will maintain a cache of properties inherited by the root of the working copy. Whenever a new working copy is checked out, any properties inherited by the root of the working copy will be cached in the working copy.  If a subtree within a working copy is switched, a separate cache will be created for the root of that subtree.  Whenever an update occurs the cache(s) will be refreshed.
  
  The cache will be stored in a new wc-ng table:
- ||||||||||<tablewidth="978px" tableheight="324px"style="font-weight:bold;      ;text-align:center">TABLE: INHERITABLE_PROPS ||
+ ||||||||||<tablewidth="978px" tableheight="324px"style="font-weight:bold;       ;text-align:center">TABLE: INHERITABLE_PROPS ||
  ||<style="font-weight:bold;">Name ||<style="font-weight:bold;">Data Type ||<style="font-weight:bold;">Primary Key ||<style="font-weight:bold;">Foreign Key ||<style="font-weight:bold;">Notes ||
  ||wc_id ||integer ||Yes ||References NODES.WC_ID || ||
  ||local_relpath ||text ||Yes ||References NODES.LOCAL_RELPATH || ||