RE: The definition of a "Baseline-Controlled Collection"

   From: Peter Raymond [mailto:Peter.Raymond@merant.com]

   Section 10.2 of the specification defines a "Baseline-Controlled
   Collection" as follows:

   A "baseline-controlled collection" is a collection from which
   baselines can be created.

   But section 12 says: 

   A collection that is under baseline control is called a
   "baseline-controlled collection".

   They can't both be right, is a BCC a resource from which a Baseline
   CAN be created or is it a resource from which a Baseline HAS BEEN
   created?

These statements don't explicitly talk about whether or not a baseline
has actually been created, but when you put a resource under version
control (or baseline control), an initial version (or baseline) is
always created for that resource, so all these statements (both the
ones in the protocol and yours above) are consistent.

   The definition in Section 10.2 seems wrong, I don't think you
   create a Baseline from a collection, you create it by checking-in a
   version-controlled configuration, which itself was created by
   placing a collection under BASELINE-CONTROL.

Yes, but the versions selected by that new baseline are determined
from the current state of the configuration rooted at the
baseline-controlled collection.  This reflects the dual role of a
collection; namely, as a resource unto itself (from which you can
create collection versions), and as the root of a configuration (from
which you can create configuration versions, aka "baselines").
Since WebDAV only gives us one URL to talk about the collection itself
and the configuration rooted at the collection, we continually have
to deal with this dual role for a collection URL.

   Infact, am I right in thinking that a "Baseline-Controlled
   Collection" is simply a collection which has a
   DAV:version-controlled-configuration property?

Actually, all members of a baseline-controlled collection have
a DAV:version-controlled-configuration property.  So a
baseline-controlled collection is a collection identified by
the DAV:baseline-controlled-collection property of some
version-controlled configuration.

   I am trying to get my head around what steps are needed to create a
   new Baseline, populated with the contents of a collection, for
   example:

   There is a Version-Controlled Collection /build/src/.
   My client issues a BASELINE-CONTROL on that Version-Controlled
Collection.

   At this point a new "Version-Controlled Configuration" is created.
   The original collection gets a DAV:version-controlled-configuration
   property set to the newly created resource.  The Version-Controlled
   Configuration gets a DAV:baseline-controlled-collection property
   set to the original collection.  A new Baseline History resource is
   created.  A new Baseline version is created (the "root baseline").
   The DAV:checked-in property of the Version-Controlled Configuration
   is set to the "root baseline".  A new collection with no members is
   created.  The "root baseline" has a DAV:baseline-collection
   pointing to the above empty collection.

Yes.

   So at this point I have a "empty" baseline, how do I populate it
   with the checked-in versions of resources from the original
   collection?  I guess I check-out the version-controlled
   configuration that was created by the BASELINE-CONTROL and just
   check it in again???

Yes, but you raise a good point.  The BASELINE-CONTROL request would
be more consistent with the VERSION-CONTROL request if it created a
baseline that captured the current state of the configuration rooted
at the baseline-controlled collection, instead of creating an empty
baseline.  In this case, the answer to your question would just have
been "it is the current DAV:checked-in baseline".

This would mean changing the DAV:create-empty-baseline postcondition
of BASELINE-CONTROL to be DAV:create-new-baseline.  Does anyone object
to this change?  I don't think many people have been implementing
the advanced semantics yet, so I'm more comfortable making these
kinds of adjustments to the advanced semantics than I would be to
the basic semantics.

   This is not clear in section 12, perhaps an example or diagram of
   creating a new baseline might help in this section....something
   like this:

                  +-----------+ 
                  |Version    | 
     +------------|Controlled |<--+ 
     |            |Collection |   | 
     |            +-----------+   | 
     |                            |DAV:b-c-collection 
     |DAV:v-c-configuration       | 
     |                            | 
     |  +-------------+           | 
     +->|Version      |-----------+ 
        |Controlled   |  
        |Configuration|--+ 
        +-------------+  | 
                         | 
          DAV:checked-in |  +---------+ 
                         |  |Baseline | 
                         |  |History  | 
                         |  |         | 
                         |  | +---+   |                   +-------------+ 
                         +--->|V1 |   | DAV:b-collection  |Collection   | 
                            | |   |---------------------->|with bindings| 
                            | +---+   |                   |to resources | 
                            +---------+                   |from the     | 
                                                          |original     | 
                                                          |collection.  | 
                                                          +-------------+ 

   Am I on the right track? 

Yes, that is exactly right.

Cheers,
Geoff

Received on Wednesday, 11 July 2001 14:37:07 UTC