Item version merging
October 27th, 2004 at 2:18 pm (3 years, 8 months ago) by Andi Vajda under chandlerdbThe transaction model chosen for Chandler’s repository calls for item version merging. In the Chandler 0.4 release, version merging is mostly implemented, with a few notable exceptions.
The item version merging problem is divided into several parts more or less tied to the low-level data model and repository implementations. Item children collections and item ref collections share the same low-level persistence implementation. In version 0.4, child collection merging is turned on while ref collection merging is turned off because it was considered too risky and not required for the release anyway. When the changes affect different parts of an item, that is, literals changed in one repository view, ref collections in the other, merging is implemented and turned on. When the changes affect similar parts of an item, that is, literals changed in both views or references changed in both views, as long as no attribute changed in both views, merging is implemented and turned on. The dreaded VersionConflictError should not be reported anymore. Instead MergeError is reported when an actual conflict, or a bug, is detected. For the next Chandler release, a developer/user conflict resolution callback is to be added so that the upper layers of the code get a chance to resolve a conflict before it becomes a MergeError.







