This page last changed on Oct 04, 2007 by jdeolive.

An equivalent of svn diff could be interesting because it would allow to:

  • Pinpoint what changed between two versions on the attribute level.
  • Perform rollbacks, just gather a reverse diff from the server and use it to build a transaction call.

A GetDiff call would really look like a GetFeature call, but using DifferenceQuery instead of a plain Query:

   <xsd:complexType name="GetDiffType">
      <xsd:complexContent>
         <xsd:extension base="wfs:BaseRequestType">
            <xsd:sequence>
               <xsd:element ref="wfsv:DifferenceQuery" maxOccurs="unbounded"/>
            </xsd:sequence>
            <xsd:attribute name="user" type="xsd:string" use="optional"/>
            <xsd:attribute name="outputFormat"
                           type="xsd:string" use="optional"
                           default="application/xml; subtype=wfsv-transaction/1.1.0">
            </xsd:attribute>
         </xsd:extension>
      </xsd:complexContent>
   </xsd:complexType>

The default result would be a Transaction call that can be applied on the server to merge the diff on another branch (when branches will be supported) or to perform a rollback. The standard (unversioned) transaction call is especially well suited, because it allows for specification of what needs to be created, deleted and udpated in order to update data to a specific revision, so it's suggested to be the default output format.
To simplify things for clients, only fid filters will be added in the resulting Transaction call (to avoid having light clients to implement a full OGC Filter handling).

Document generated by Confluence on May 14, 2014 23:00