You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2010/02/15 14:16:05 UTC

svn commit: r910214 - /subversion/trunk/notes/wc-ng/transitions

Author: philip
Date: Mon Feb 15 13:16:05 2010
New Revision: 910214

URL: http://svn.apache.org/viewvc?rev=910214&view=rev
Log:
* notes/wc-ng/transitions: New.

Added:
    subversion/trunk/notes/wc-ng/transitions   (with props)

Added: subversion/trunk/notes/wc-ng/transitions
URL: http://svn.apache.org/viewvc/subversion/trunk/notes/wc-ng/transitions?rev=910214&view=auto
==============================================================================
--- subversion/trunk/notes/wc-ng/transitions (added)
+++ subversion/trunk/notes/wc-ng/transitions Mon Feb 15 13:16:05 2010
@@ -0,0 +1,130 @@
+Delete and revert both operate on WORKING_NODE.presence while leaving
+BASE_NODE.presence untouched.
+
+Possible BASE_NODE.presence values:
+<none>, normal, incomplete, absent, excluded, not-present
+
+Possible WORKING_NODE.presence values:
+<none>, normal, incomplete, absent, excluded, not-present, base-deleted
+
+
+------original-state-------            ----delete----
+BASE_NODE      WORKING_NODE            WORKING_NODE
+<none>         <none>                  -
+<none>         normal                  <none> or not-present [1]
+<none>         incomplete              <none> or - [2]
+<none>         absent                  -
+<none>         excluded                - [3]
+<none>         not-present             -
+<none>         base-deleted            -
+normal         <none>                  base-deleted
+normal         normal                  <none> or not-present [1]
+normal         incomplete              <none> or - [2]
+normal         absent                  -
+normal         excluded                - [3]
+normal         not-present             -
+normal         base-deleted            -
+incomplete     <none>                  base-deleted
+incomplete     normal                  <none> or not-present [1]
+incomplete     incomplete              <none> or - [2]
+incomplete     absent                  -
+incomplete     excluded                - [3]
+incomplete     not-present             -
+incomplete     base-deleted            -
+absent         <none>                  -
+absent         normal                  x
+absent         incomplete              x
+absent         absent                  x
+absent         excluded                x
+absent         not-present             x
+absent         base-deleted            x
+excluded       <none>                  base-deleted
+excluded       normal                  <none> or not-present [1]
+excluded       incomplete              <none> or - [2]
+excluded       absent                  -
+excluded       excluded                - [3]
+excluded       not-present             -
+excluded       base-deleted            -
+not-present    <none>                  -
+not-present    normal                  <none> or not-present [1]
+not-present    incomplete              <none> or - [2]
+not-present    absent                  -
+not-present    excluded                - [3]
+not-present    not-present             -
+not-present    base-deleted            -
+
+
+------original-state-------            ---revert---
+BASE_NODE      WORKING_NODE            WORKING_NODE
+<none>         <none>                  -
+<none>         normal                  <none> or - [4]
+<none>         incomplete              <none> or - [4]
+<none>         absent                  -
+<none>         excluded                -
+<none>         not-present             normal
+<none>         base-deleted            <none>
+normal         <none>                  -
+normal         normal                  <none> or - [4]
+normal         incomplete              <none> or - [4]
+normal         absent                  -
+normal         excluded                -
+normal         not-present             normal
+normal         base-deleted            <none>
+incomplete     <none>                  -
+incomplete     normal                  <none> or - [4]
+incomplete     incomplete              <none> or - [4]
+incomplete     absent                  -
+incomplete     excluded                -
+incomplete     not-present             normal
+incomplete     base-deleted            <none>
+absent         <none>                  -
+absent         normal                  x
+absent         incomplete              x
+absent         absent                  x
+absent         excluded                x
+absent         not-present             x
+absent         base-deleted            x
+excluded       <none>                  -
+excluded       normal                  <none> or - [4]
+excluded       incomplete              <none> or - [4]
+excluded       absent                  -
+excluded       excluded                -
+excluded       not-present             normal
+excluded       base-deleted            <none>
+not-present    <none>                  -
+not-present    normal                  <none> or - [4]
+not-present    incomplete              <none> or - [4]
+not-present    absent                  -
+not-present    excluded                -
+not-present    not-present             normal
+not-present    base-deleted            <none>
+
+
+key
+---
+- : operation not allowed or no change required
+x : original state not allowed
+
+notes
+-----
+[1] <none> if the root of the copy, not-present otherwise.
+[2] <none> if the root of the copy, - otherwise
+[3] A sparse copy, should commit automatically delete an excluded node?
+[4] <none> if the root of the copy, - otherwise
+
+
+Generally BASE_NODE.presence normal and incomplete are treated the
+same, since update can change one into the other at any time.
+
+It's not possible to delete something with WORKING_NODE.presence
+incomplete unless it's the root of the copy.  If we transformed it to
+not-present revert would not be able to go back to incomplete.
+
+It's possible to delete something with BASE_NODE.presence excluded
+because the name alone is sufficient information at commit time.
+
+WORKING_NODE.presence excluded is more difficult.  Should commit
+automatically delete an excluded node?  There are arguments for and
+against.  If commit doesn't automatically delete the node can the user
+delete it in the working tree?  Like WORKING_NODE.presence incomplete
+the problem is that revert would not be able to cope.

Propchange: subversion/trunk/notes/wc-ng/transitions
------------------------------------------------------------------------------
    svn:eol-style = native