Date: Mon, 28 Aug 2000 20:00:04 -0700 From: Greg Stein <gstein@lyra.org> To: ietf-dav-versioning@w3.org Message-ID: <20000828200004.D14349@lyra.org> Subject: MERGE response body In Subversion, I'm planning to MERGE an activity into the (version selector) collection(s). (no workspaces) However, the response body isn't quite as rich as I'd like. Specifically, consider the MERGE body right now: it returns a set of URLs of the resources that were affected. But it says nothing more. You must turn around and issue a set of PROPFIND or REPORT requests to find out the state of the repository after the MERGE. To be concrete: I want the MERGE to return the DAV:getetag and DAV:target values for each affected resource. Why? *) DAV:getetag returns the new/updated etag which allows the client to use it in a GET at some point in the future. This is especially important when the client wants to fetch a "diff" format according to: Delta Encoding in HTTP: http://www.ietf.org/internet-drafts/draft-mogul-http-delta-05.txt *) DAV:target returns the URL for the new version resource. Very important if I want to know what my local state now represents. Before the merge, I might have /$svn/his/project/file/56 and after ../57. I'd rather this is returned in the MERGE than a followup query. Note that the result of a MERGE is a set of (disjoint) resources. It could be very cumbersome to iterate over those resources fetching updated property information. (e.g. my repository has 10,000 files and I update 2 in separate subtrees; how do I minimize the server interaction?) I would suggest that we change the MERGE request body to something like this: <!ELEMENT merge (no-auto-merge?, prop?)> [ note the current draft is missing the "?" on no-auto-merge ] The DAV:prop element would be similar to a PROPFIND/prop: it is merely specifying names of properties to return. The MERGE response then becomes: <!ELEMENT merge-response (update-set?, ignored-set?)> <!ELEMENT update-set (response*)> <!ELEMENT ignored-set (href*)> [ note the current draft does not include "?" in the merge-response child elements ] The DAV:response element follows that of RFC 2518 and the PROPFIND response. Thoughts? Cheers, -g -- Greg Stein, http://www.lyra.org/