Eric Armstrong wrote:
> [Note: If I can *just* get the rest of the versioning process worked
> out, I'll have an announcement soon.]
For versioning, from the class comment of PointrelTreeArchiver in Squeak
(this took quite a bit of time/thought to work out, and if I did it over
again I might make some minor changes):
=============================================
maintains multiple versions of things.
This is the recursive structure maintained.
There is one top level named node called "tree archive root".
This node points to other nodes which contain versions of archive
information.
Any user of this archive to load a sensible subset of the archive
then will have one "node version" of "tree archive root" (ot lower in
the tree).
This node version will point to other specific node versions
which defines a subset of the archive.
In this definition, except for the first node, each line starts with the
name of a property of the object type above it.
The first node
Three dots such as '...' denotes that the previous property line above
it can be repeated multiple times.
'had property -> type' denotes the expected type of the property.
The subsequent indented lines define the properties of this type if it
is new.
Things in double quotes are comments.
named node
has name -> string
has node version list -> node version list
has node version -> node version
has version tag -> string
has current contents version -> contents version
"the following node version should be from a subnode's
version list"
has current subnode version -> node version
...
...
has contents version list -> contents version list
has contents version -> contents version
has contents -> string
has version tag -> string
...
has subnode list -> subnode list
has named node -> named node
...
"The following field is only appropriate if there is only one
shared current state by all archive users"
has loaded version -> node version
Or, decomposed into pseudo-objects:
node version list
has node version -> node version
...
node version
has version tag -> string
has current contents version -> contents version
"the following node version should be from a subnode's version
list"
has current subnode version -> node version
...
contents version list
has contents version -> contents version
...
contents version
has contents -> string
has version tag -> string
subnode list
has named node -> named node
...
named node
has name -> string
has node version list -> node version list
has contents version list -> contents version list
has subnode list -> subnode list
"The following field is only appropriate if there is only one
shared current state by all archive users"
has loaded version -> node version
==========================================
(Pursuant to the terms of the X/MIT type license)
This produces a general system for having multiple versions of
hierarchical content. ENVY for Smalltalk (VisualWorks, VisualAge)
produces a similar effect but is less general.
-Paul Fernhout
Kurtz-Fernhout Software
=========================================================
Developers of custom software and educational simulations
Creators of the Garden with Insight(TM) garden simulator
http://www.kurtz-fernhout.com
-------------------------- eGroups Sponsor -------------------------~-~>
eLerts
It's Easy. It's Fun. Best of All, it's Free!
http://click.egroups.com/1/9699/5/_/444287/_/972648217/
---------------------------------------------------------------------_->
Community email addresses:
Post message: unrev-II@onelist.com
Subscribe: unrev-II-subscribe@onelist.com
Unsubscribe: unrev-II-unsubscribe@onelist.com
List owner: unrev-II-owner@onelist.com
Shortcut URL to this page:
http://www.onelist.com/community/unrev-II
This archive was generated by hypermail 2b29 : Fri Oct 27 2000 - 05:13:40 PDT