Delete and revert both modify WORKING_NODE while leaving BASE_NODE (if
it exists) unchanged.  The two operations can modify or delete the
WORKING_NODE associated with a BASE_NODE.  Delete can also create a
new WORKING_NODE.

The original state before the operation can be characterised by
BASE_NODE.presence and WORKING_NODE.presence, and only
WORKING_NODE.presence changes (except when a new WORKING_NODE is
created).

There are 5 possible BASE_NODE.presence values: 
  normal, incomplete, absent, excluded, not-present
in addition to <none> when the BASE_NODE does not exist.

There are 6 possible WORKING_NODE.presence values:
  normal, incomplete, absent, excluded, not-present, base-deleted
in addition to <none> when the WORKING_NODE does not exist.

### A comment in 'wc-metadata.sql' says not all of 6 values are
allowed in WORKING, but it may be wrong.  A wc-to-wc copy could have
absent and excluded presence values in the BASE source, does the copy
put those values into the working tree?  A url-to-wc copy could get
an authz failure part way through, does that result in an absent node?
There is currently no UI to do a sparse url-to-wc copy, but if there
was then would that result in an excluded node?

When removing a WORKING_NODE any ACTUAL_NODE is also removed.

------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                  base-deleted or not-present [4]
normal         incomplete              base-deleted or - [5]
normal         absent                  -
normal         excluded                - [3]
normal         not-present             -
normal         base-deleted            -
incomplete     <none>                  base-deleted
incomplete     normal                  base-deleted or not-present [4]
incomplete     incomplete              base-deleted or - [5]
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                  base-deleted or not-present [4]
excluded       incomplete              base-deleted or - [5]
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 - [6]
<none>         incomplete              <none> or - [6]
<none>         absent                  -
<none>         excluded                -
<none>         not-present             normal
<none>         base-deleted            <none>
normal         <none>                  -
normal         normal                  <none> or - [6]
normal         incomplete              <none> or - [6]
normal         absent                  -
normal         excluded                -
normal         not-present             normal
normal         base-deleted            <none>
incomplete     <none>                  -
incomplete     normal                  <none> or - [6]
incomplete     incomplete              <none> or - [6]
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 - [6]
excluded       incomplete              <none> or - [6]
excluded       absent                  -
excluded       excluded                -
excluded       not-present             normal
excluded       base-deleted            <none>
not-present    <none>                  -
not-present    normal                  <none> or - [6]
not-present    incomplete              <none> or - [6]
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

### it would be nice to call out the operations that are "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] base-deleted if the root of the copy, not-present otherwise
[5] base-deleted if the root of the copy, - otherwise
[6] <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.

### gstein sez: commit should NOT do a deletion for an excluded node.
###   the presence is typically used for (say) copying a large tree,
###   and then excluding the subtree within the copy from the working
###   copy. maybe the user doesn't want all that stuff there. at
###   commit time, the copy is performed, and nothing more. if you
###   wanted to delete this node, then switch it to depth=empty
###   and presence=not-present.

Pre-centralisation directories can be obstructed, any such nodes can
be treated as presence=normal.
