5f27dc47d3349c5308321ff04115d002.ppt
- Количество слайдов: 21
Using the Web for Document Versioning: An Implementation Report for Delta. V James J. Hunt, Jürgen Reuter Department of Computer Science Universität Karlsruhe
Task " Starting Point: client/server versioning system client/server communication via proprietary protocol over Java-RMI " Task: replace Java-RMI with Delta. V standard
Delta. V Protocol " Protocol Design Goals: support most common versioning models provide versioning for Web and DAV clients in standardized fashion ensure backwards compatibility to versioningunaware Web and DAV clients " Protocol Implementation: as extension of DAV, which itself extends HTTP
Delta. V Protocol
Starting Point
Goal
Scope " implement early 04. 5 draft of Delta. V " focus on version control " " do not consider configuration management focus on client-managed workspaces
Implementation Details " coded in Java " code size: core HTTP server: 16720 lines attributed DAV file system: 5357 lines implementation: >8500 lines Delta. V implementation: >10000 lines
Delta. V vs. RCE: Common Ground " use checkin/checkout model " organize revisions as ancestral graph " require unique initial revision " provide storage space for meta data
Working Resources vs. Templates in a checkin/checkout model " Delta. V Working Resource: server-side holds " modifiable copy of existing version working resource properties RCE Template: placeholder for new revision in archive; modifiable copy of previous revision in user's file system space holds pre-initialized revision attributes
Version Graph Delta. V vs. RCE
Version Properties vs. Attributes " Trivial mapping: DAV: Author <-> REV_AUTHOR DAV: Comment " <-> REV_DESCRIPTION Needs date format conversion: DAV: creationdate <-> REV_DATE_IN DAV: getlastmodified <-> REV_TIMESTAMP
Version Properties vs. Attributes: Version Tree Navigation " DAV: successor-set property: no designated line of development includes revisions only, use DAV: workingresource-id-set to get working resources " RCE's REV_NEXT, REV_BRANCHES attribute: tracks current line of development with REV_NEXT includes revisions and templates
Version Properties vs. Attributes " Problem: no Delta. V equivalent for RCE's ARCH_USERS, ARCH_COMMENT_LEADER attributes " Solution: use " user-defined resource properties Drawback: client-specific use, interoperability problems when incompatible clients share same server
XML Confusion " DAV, Delta. V: make use heavy use of XML namespaces specify DTD syntax informally do not consider namespaces in DTD do not support XML validation
XML Confusion " problems: unclear how to specify namespaces in DTD namespaces do not seem to be supported by validating parser many people tend to disregard XML validation limited " expressiveness of DTD prospect: maybe XML schemata are more appropriate
Conclusion " " applicability of Delta. V on RCE proven provided feedback for development of Delta. V " issues left (mostly DAV issues) " Delta. V ongoing effort " " various implementations underway (e. g. Apache) ultimate test still pending: run our client/server against someone else's
Duplicate Use of XML Elements " DAV: <!ELEMENT " set (prop) > Delta. V: <!ELEMENT set (label-name)>
Limited Expressiveness <!ELEMENT auto-checkout ANY> ANY value: A sequence of elements with at most one DAV: unlocked-update element and at most one DAV: locked-update element. <!ELEMENT unlocked-update EMPTY> <!ELEMENT locked-update EMPTY>
Limited Expressiveness <!ELEMENT auto-checkout (unlocked-update | locked-update)* > <!ELEMENT unlocked-update EMPTY> <!ELEMENT locked-update EMPTY>
Marshalling PROPFIND /foo. java HTTP/1. 1 Content-Length: 0 HTTP/1. 1 207 Multi-Status Content-Type: text/xml Content-Length: 1418 DAV: 1, 2 <? xml version="1. 0"? > <A: multistatus xmlns: A="DAV: "> <A: response> <A: href>http: //Rom. ira. uka. de: 4711/foo. java</A: href> <A: propstat> <A: prop xmlns: B="RCE: "> <A: auto-version>F</A: auto-version> <A: working-resource-id-set /> <B: access-list>reuter(RWX), jjh(RW)</B: access-list>. . . <A: revision-set> <A: href>http: //Rom. ira. uka. de: 4711/xkr 1. 1</A: href> <A: href>http: //Rom. ira. uka. de: 4711/xkr 1. 2</A: href> </A: revision-set> </A: prop> <A: status>HTTP/1. 0 200 OK</A: status> </A: propstat> </A: response> </A: multistatus>
5f27dc47d3349c5308321ff04115d002.ppt