Every item (node or property) in the repository has a status indicator that governs what happens to that item when its parent node is versioned. This status is defined by the onParentVersion attribute in the PropertyDefinition or NodeDefinition that applies to the item in question.
For example, let N be a versionable node, meaning it has mixin node type mix:versionable. Also let N have a primary node type that allows it to have one property called P and one child node called C.
What happens to P and C when a new version of N is checked in depends on their respective OnParentVersion attribute as defined in the PropertyDefinition for P and the NodeDefinition for C.
The possible values for the OnParentVersion attribute are: COPY, VERSION, INITIALIZE, COMPUTE, IGNORE and ABORT.
The sections below describe, for each possible value of the OnParentVersion attribute, what happens to C and P when,
N.checkin() is performed, creating the new version VN and adding to the version history.
N.restore(VN, b) is performed, restoring the version VN (the boolean parameter b governs what happens on UUID collision).