modeling RCS style branches with activities

From: Geoffrey M. Clemm (geoffrey.clemm@rational.com)
Date: Sun, Jun 25 2000

  • Next message: Geoffrey M. Clemm: "Re: [Moderator Action] draft-ietf-deltav-versioning-04.8"

    Date: Sun, 25 Jun 2000 11:45:42 -0400 (EDT)
    Message-Id: <200006251545.LAA02117@tantalum.atria.com>
    From: "Geoffrey M. Clemm" <geoffrey.clemm@rational.com>
    To: ietf-dav-versioning@w3.org
    Subject: modeling RCS style branches with activities
    
    
    An RCS style branch is limited to a single versioned resource
    (i.e. you can't use the "same" branch in multiple versioned resources),
    but otherwise it has the same behavior as an activity (i.e. single
    line of descent, the ability to "reserve" a branch with a checkout,
    etc.).
    
    The only obstacle to modeling RCS style branches is that currently
    we support a "MKACTIVITY" that is independent of any versioned
    resource.  If instead, we allowed a CHECKOUT to specify that
    a "new" activity should be created for this checkout, then the
    protocol could be used for RCS style branches as well.
    
    In particular, currently we allow the CHECKOUT request body to be:
    
    <D:checkout>
      <D:activity>
        <D:href> /some/activity/url </D:href>
      </D:activity>
    </D:checkout>
    
    In order to create a new activity, one would say:
    
    <D:checkout>
      <D:activity>
        <D:new/>
      </D:activity>
    </D:checkout>
    
    The URL for the new activity could then be obtained from the
    DAV:activity property of the new revision.
    
    The rule for determing the activity of a new revision would be:
    - the activity specified in the CHECKOUT; else
    - the activity specified by the DAV:current-activity of the workspace; else
    - the activity of the revision being checked out
    
    Then a "CHECKOUT" that specified no activity would succeed against any
    versioning server, and a "CHECKOUT" with activity=DAV:new would
    succeed against any server that supported at least RCS level
    branching.
    
    There are also "change-set" based servers that allow you to create
    a new change set with a checkin, but do not allow you to create a
    new change-set independent of any versioned resource.  So I propose
    that we replace the MKACTIVITY method with an activity=DAV:new argument
    to the CHECKOUT method.  This provides compatibility with more servers,
    and makes the protocol simpler (just one way to create a new activity).
    
    Cheers,
    Geoff