103
accept them or make other changes to the result. In the merge process, the exact user
changes that led to conflicts would all be accessible and linked to the precise context in
which they occurred.
A Palimpsest-based model encodes much more information about the precise changes
contributing to a version and their relationships, but a branching system does not need most
of the capabilities of a Palimpsest-based model. For a branching system without merge, the
version graph is isomorphic to the subset relationships among the change sets representing
the versions, with successor relations corresponding to descending chains under the subset
relation between change sets. Once merge operations and conflict resolution are added, this
isomorphism between the version graph and the subset relation on change sets ceases to
hold, since a descendant of a version may lack some conflict-producing changes of its par-
ent(s).
One special case of tree-structured versioning systems is even more restrictive. Some sys-
tems (of which the earliest was Augment/NLS (Engelbart, Watson et al. 1973; Engelbart
1984)) constrain the version graph to be a simple sequence of historically related revisions.
These systems can be modeled in the same way as tree-structured systems. In this case, a
series of versions corresponds to a chain of change sets under the subset relation.
5.1.2 Tracking states and persistent addressing
Like any change-oriented representation, the Palimpsest model allows a much larger
number of potential configurations to be easily described and related than state-oriented
systems can. Any causally (or minimally) consistent set of changes defined a P-sequence
that has a well-defined state. Any two versions represented by change sets can be meaning-
fully compared in a number of ways:
• The differences between two change setsAandBcan be determined by examining the
sets A – B,B – A, andA ˙ B.
accept them or make other changes to the result. In the merge process, the exact user
changes that led to conflicts would all be accessible and linked to the precise context in
which they occurred.
A Palimpsest-based model encodes much more information about the precise changes
contributing to a version and their relationships, but a branching system does not need most
of the capabilities of a Palimpsest-based model. For a branching system without merge, the
version graph is isomorphic to the subset relationships among the change sets representing
the versions, with successor relations corresponding to descending chains under the subset
relation between change sets. Once merge operations and conflict resolution are added, this
isomorphism between the version graph and the subset relation on change sets ceases to
hold, since a descendant of a version may lack some conflict-producing changes of its par-
ent(s).
One special case of tree-structured versioning systems is even more restrictive. Some sys-
tems (of which the earliest was Augment/NLS (Engelbart, Watson et al. 1973; Engelbart
1984)) constrain the version graph to be a simple sequence of historically related revisions.
These systems can be modeled in the same way as tree-structured systems. In this case, a
series of versions corresponds to a chain of change sets under the subset relation.
5.1.2 Tracking states and persistent addressing
Like any change-oriented representation, the Palimpsest model allows a much larger
number of potential configurations to be easily described and related than state-oriented
systems can. Any causally (or minimally) consistent set of changes defined a P-sequence
that has a well-defined state. Any two versions represented by change sets can be meaning-
fully compared in a number of ways:
• The differences between two change setsAandBcan be determined by examining the
sets A – B,B – A, andA ˙ B.