MERGE response body

From: Greg Stein (gstein@lyra.org)
Date: Mon, Aug 28 2000

  • Next message: Clemm, Geoff: "RE: conference call?"

    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/