Patent attributes
Maintaining versions and workspaces in an object repository is disclosed. The system provides an efficient way to manage versions of objects by only copying objects when absolutely necessary, i.e. when a property value in a particular object has changed. In addition, the system provides a mechanism to control whether or not relationships are propagated to successor versions of an object. A further aspect of the system is that resolution of objects during a relationship traversal can be customized depending on whether or not an application accessing the objects is version-aware. If the application is not version aware, a means for resolving the relationship to a particular object is provided. A still further aspect of the system is that merge behavior is parameterized. When two versions of an object are merged, flags control how conflicts in property values and relationship contents are managed. Finally, the system provides a workspace that acts as a virtual repository session and provides workspace context and scope to repository objects.