Subject: Objects

Keywords: ::overview
          ::history
          ::version

Title: object versions overview

--------------------------------------------------

version_history is mechanism to remember older versions of Code and Comments.
There is major version which is persistent and should advance slowly
and minor version which advances more quickly and is subject to GC.

VID version id the pair of major and minor version stamps.
CVID current version id
OVID object version id  

When the major version is advanced stamp is created and 
it is pushed onto the head of chain of VIDs. Thus the major
versions are orderable.
The major version should be advanced when there is consistent
state that contains signifcant changes since last advance.

Each relevant object has stack of version identifier and object snapshot pairs.
If an object is modifed and it's latest version identifier does not match the
 current version identifier, then new version is pushed on the objects
 version history containing the object state prior to the latest modification.  

Thus:
 If top OVID is same as CVID then object modified since CVID last advanced.
 Conversely if not same then not modified since last advance.
 Last modification happened in scope of top OVID
 Previous version is data of version record.
 
One normally thinks of version by tagging all content with an version 
id at point in time. This is similar if you associate VID with the
next content in the chain
Eg: CVIDn, (OVIDn-1, SRCn); (OVIDn-2, SRCn-1)
  
Use of version history 
 to be able to access prior versions.
 to compare histories when merging.

Each library instance advances minor stamp, so there will be 
version saved if object modified in lib session.  

You can access old versions via the Versions* button on the object menu.


--------------------------------------------------

Authors: 

Contributors: NUPRL:t
              RICH:t



Home