Version Control

Version control provides the following extensions to concurrency control:
  1. The existence of multiple versions of objects eliminates the need for write-write synchronization since each write operation occurs in the context of one version and thus cannot conflict with other operations.
  2. A version control mechanism preserves the object identity of different versions of collaborative artifacts.
  3. A version control mechanism allows several long updating sessions on the same object to run in parallel with the restriction that different branches (in the version history tree) of the object are used. These branches must be merged at some point in time to reflect the updates performed by all users.
  4. The integrity of individual contributions to an object is maintained since the complete history of the object is recorded by the version control mechanism.
The biggest problem in using version control to allow write-write conflicts is that not all simultaneous updates to nodes can be merged later on in a deterministic way.