[unrev-II] Versioning Discussion

From: Eric Armstrong (eric.armstrong@eng.sun.com)
Date: Fri Oct 27 2000 - 14:18:01 PDT

  • Next message: John J. Deneen: "Re: [unrev-II] Re: Plan for HyperScope-OHS launch and development"

    Again, I am abstracting this message to promote it to a higher level in
    the discussion.

    The thing I notice immediately is the distinction between contents and
    subnodes. It appears I am not alone in realizing these two conceptual
    entities must be kept distinct. Yes?

    -------- Original Message --------
    From: Paul Fernhout

    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" (or 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.

    Three dots such as '...' denotes that the previous property line above
    it can be repeated multiple times.

    'has 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 -------------------------~-~>
    eGroups eLerts
    It's Easy. It's Fun. Best of All, it's Free!
    http://click.egroups.com/1/9698/5/_/444287/_/972681259/
    ---------------------------------------------------------------------_->

    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 - 14:24:32 PDT