- From: Clemm, Geoff <gclemm@rational.com>
- Date: Fri, 28 Jun 2002 15:18:01 -0400
- To: "'Deltav WG'" <ietf-dav-versioning@w3.org>
So far, everyone has either agreed or remained silent on this topic,
so as a motivator for anyone objecting to speak up (:-), I will mark this
issue
as resolved in the errata, with the resolution being that the Label
header will be deprecated, and the DAV:labeled-version REPORT inserted
in its place. In particular, I propose the following definition for
the DAV:labeled-version REPORT:
-------------------
8.3 DAV:labeled-version Report
The DAV:labeled-version report describes the requested properties
of the version with that label in a specified version history.
If the DAV:labeled-version report is applied to a version-controlled
resource, it is applied to the DAV:version-history of that
version-controlled resource.
Marshalling:
The request body MUST be a DAV:labeled-version XML element.
<!ELEMENT labeled-version ANY>
ANY value: a sequence of zero or more elements, with
at most one DAV:prop element and with exactly one
DAV:label-name element.
prop: see RFC 2518, Section 12.11
The response body for a successful request MUST be a DAV:multistatus
XML element.
multistatus: see RFC 2518, Section 12.9
The response body for a successful DAV:labeled-version REPORT
request MUST contain a DAV:response element for each resource
that satisfies the Depth header of the request.
8.3.1 Example - DAV:labeled-version Report
>>REQUEST
REPORT /folder/ HTTP/1.1
Host: www.webdav.org
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
Depth: 1
<?xml version="1.0" encoding="utf-8" ?>
<D:labeled-version xmlns:D="DAV:">
<D:label-name>tested</D:label-name>
<D:prop>
<D:version-name/>
<D:version/>
</D:prop>
</D:labeled-version>
>>RESPONSE
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>http://www.webdav.org/folder/</D:href>
<D:propstat>
<D:prop>
<D:version-name>V5</D:version-name>
<D:creator-displayname>Fred</D:creator-displayname>
<D:version>
<D:href>http://repo.webdav.org/his/23/ver/V5</D:href>
</D:version>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>http://www.webdav.org/folder/foo.html</D:href>
<D:propstat>
<D:prop>
<D:version-name>V8</D:version-name>
<D:version>
<D:href>http://repo.webdav.org/his/84/ver/V8</D:href>
</D:version>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
-----------------------------------------
Cheers,
Geoff
-----Original Message-----
From: Clemm, Geoff [mailto:gclemm@Rational.Com]
Sent: Sunday, April 28, 2002 9:53 AM
To: 'Deltav WG'
Subject: Replacing the Label header with a DAV:labeled-version report
Since this is a fairly significant change, I'd like to
hear from a few more folks before adding this to the 3253 Errata.
Thanks,
Geoff
-----Original Message-----
From: Julian Reschke [mailto:julian.reschke@greenbytes.de]
Sent: Saturday, April 27, 2002 5:09 AM
To: Clemm, Geoff; 'Deltav WG'
Subject: RE: Label header vs PROPFIND depth 1
> From: ietf-dav-versioning-request@w3.org
> [mailto:ietf-dav-versioning-request@w3.org]On Behalf Of Clemm, Geoff
> Sent: Friday, April 26, 2002 6:06 PM
> To: 'Deltav WG'
> Subject: RE: Label header vs PROPFIND depth 1
>
>
> From: Julian Reschke [mailto:julian.reschke@greenbytes.de]
>
> - I'd like to see the label *header* deprecated
> - I'm happy with the LABEL method and the label-name-set property
> - I think that PROPFIND/label should be replaced by a specific REPORT
>
> Is the proposed DAV:labeled-version report OK with you?
Yes. But I think it's Tim's turn to say whether this would work for him or
not...
> - I'm unsure about other methods that are currently affected by the
> header -- what were the requirements...?
>
> The other methods are LABEL, CHECKOUT, GET, and COPY.
> For Depth:0 variants of these operations, the Label header
> just provided an optimization to save one roundtrip
> (i.e. first getting the version URL via the DAV:labeled-version report).
> I believe we can easily do without that Depth:0 optimization.
As stated before, I think that's not the single problem. Having GET return a
(representation of a) version rather than (a representation of) the VCR
makes the version *by definition* a variant (representation) of the VCR --
and it seems that most of us want to avoid that interpretation.
> For Depth:infinity (only relevant for LABEL and COPY), the savings
> would be more significant, but unfortunately the semantics is broken
> (since if the namespace is being versioned, you'll get the wrong
> resources if you simply do a Depth operation on the current namespace).
>
> The Depth:infinity Label header operations are really just a way of
> trying to have the client fake workspaces and baselines, instead of
> having the server support them directly. Since it is much more
> efficient and reliable to have the server layer these constructs
> above a labeling infrastructure, rather than having the client do
> so, I believe the cost of maintaining these Depth:infinity Label
> header operations in the protocol is not warranted.
>
> Note though that (depth:0) labeling and baselining go very well
> together. Instead of doing a Depth:infinity LABEL, you can create a
> baseline (which under the hood the server may well implement with
> reserved labels, but maybe not), and then LABEL that baseline. Then
> when you want to do a Depth:infinity COPY, you retrieve the
> DAV:baseline-collection of the labeled baseline (using the
> DAV:labeled-version report), and copy that to wherever you want.
>
> Alternatively, if you want a "modifiable" selection, you can create a
> workspace (which under the hood the server may well implement with
> reserved labels, but maybe not). When you want to adjust the versions
> being selected, you just use UPDATE. Then when you want to do a
> Depth:infinity COPY, you just copy from that workspace to wherever you
> want.
>
> - Servers that decide to implement LABEL and DAV:label-name-set,
> but no not support the label header should *not* report the LABEL
> feature in OPTIONS.
>
> That's probably right. A client can find out if the LABEL operation
> is supported by querying the DAV:supported-method-set property values
> of a VCR.
...and also use DAV:supported-live-property-set to discover the
DAV:label-name-set property.
Received on Friday, 28 June 2002 15:18:34 UTC