|Deletions are marked like this.||Additions are marked like this.|
|Line 43:||Line 43:|
|'''Merged Change'''. A refence to an atomic change.||'''Merged Change'''. A refence to an atomic change. The list of merged changes
is a sub-element of an atomic change. That list may be empty if there have been
no merges in this revision for that path.
Logical Data Model
- diagrams are yet to follow
- many aspects are not modelled correctly and will change
- to whatever further discussion will suggest
Repository. In this context, a mere container for revisions. There may be more than one repository and merge tracking shall work across repository boundaries. Attributes: ID (may or may not be its UUID)
Revision. A (possibly empty) set of atomic changes. They are unalterable and identified by their number within the repository. Per repository, revisions form a single, contiguous line of history. Attributes: Revnum.
Atomic Change. The smallest tracable entity of change and associated to exactly one revision. The list of atomic changes can be modified by the user. Due guarantee referential integrity, there is no way to delete an atomic change. Attributes: ID (relative to revision), change type, path, node type,
- optional: copyfrom path + rev
- no-op (instead of deletion; also for merges that result in zero net change)
- contents (no distiction between property and contents change)
- copy (add with copy-from info)
- rename (implies deletion at copy-from info)
Changes are strictly ordered within a revision. This is necessary since removals, copies and renames may replace the same path with different nodes and that may happen multiple times per revision. Q: Normalize lists, e.g. tree mods first followed by a max 1 contents change?
Merged Change. A refence to an atomic change. The list of merged changes is a sub-element of an atomic change. That list may be empty if there have been no merges in this revision for that path. As a convention, we only record the changes immediately merged, i.e. those pertaining to the merge source instead of all changes along the merge hierarchy.
Internal Data Model