David Nuescheler wrote:
One additional note:
It would be fine to record the "lineage" of the new version-history
created by the copy, by adding a property to the version-history that
is a reference to the version from which that new version-history was created.
We could call it the "copy-source" property. This copy-source property would
give folks all the information they need, without violating the change-set
invariant. Someone that wants to reconstruct the "cross-copy history", could
do so by traversing both predecessor references and copy-source references. If
we want to doubly link the data structure, we could add a "copy-destination"
reference, that is the inverse of the copy-source reference.
Well, I may be wrong, but this is what I thought subversion does, and
what I meant in previous post. It's not that the two nodes after the
copy share the same version history but that a node was a different node
in a previous version! The copy itself registers a new version in the
destination, and the precesessor of that version is the version of the
source node at that time, in other words with created a branch. In
subversion, a branch is implemented as a copy.
Carlos