Navigace

Hlavnφ menu

 

WebDAV - verze podle DeltaV

WebDAV je zkratkou pro distribuovanΘ autorizovßnφ a vytvß°enφ verzφ (Web Distributed Authoring and Versioning). Paradoxem ovÜem je, ₧e RFC dokument popisujφcφ tento standard ne°φkß o verzφch ani slovo. Teprve n∞kolik let po uvoln∞nφ finßlnφ verze WebDAVu (v b°eznu 2002) byl publikovßn i standard dopl≥ujφcφ WebDAV o podporu verzφ. Tato technologie se naz²vß DeltaV (The Web Versioning and Configuration Management). Stejn∞ jako WebDAV i DeltaV pou₧φvß XML dokumenty a protokol HTTP.

K Φemu tedy DeltaV slou₧φ? JednoduÜe k tomu, aby bylo mo₧nΘ uchovßvat r∙znΘ verze dokument∙, kterΘ jsou dostupnΘ prost°ednictvφm WebDAVu. Toho lze vyu₧φt nap°φklad pro vytvß°enφ PHP skript∙, kde nßm systΘm umo₧nφ vrßtit se ve v²voji k p°edchozφ verzi nebo vytvo°it v²sledn² skript spojenφm dvou p°edchßzejφcφch verzφ. DeltaV krom∞ standardnφ jednΘ v∞tve v²voje (tzn. p°edek mß v₧dy jen jednoho nßslednφka - lineßrnφ verze) umo₧≥uje i vφcev∞tvΘ (nelineßrnφ) spravovßnφ verzφ.

V porovnßnφ s technologiφ DASL je DeltaV mnohem rozsßhlejÜφ. Krom∞ mnoha nov²ch XML element∙ pro popis verzφ, soubor∙ a kolekcφ, zavßdφ takΘ celkem jedenßct nov²ch HTTP metod, kterΘ je mo₧no v komunikaci se serverem pou₧φt.

Rozsah funkΦnosti sprßvy je velmi Üirok², a proto je ve standardu DeltaV rozd∞len do dvou Φßstφ (model∙). Prvnφ, zßkladnφ model popisuje, jakΘ funkce by m∞l podporovat server umo₧≥ujφcφ jednoduchou sprßvu verzφ. Nßsledujφcφ seznam zahrnuje funkce zßkladnφho modelu:

  • lineßrnφ verze (jedna v∞tev verzφ)
  • zφskßnφ p°ehledu o v²voji verzφ (metoda REPORT)
  • za°azenφ zdroje do sprßvy verzφ (metoda VERSION-CONTROL)
  • vytvo°enφ novΘ verze
  • kontrola, zda je zdroj ji₧ za°azen do sprßvy verzφ
  • mo₧nost automatickΘ tvorby verzφ
  • update aktußlnφ verze z verze p°edchßzejφcφ (metoda UPDATE)
  • pojmenovßnφ verzφ (metoda LABEL)
  • vytvß°enφ pracovnφch ploch (workspaces)

RozÜφ°en² model je obohacen o n∞kterΘ dalÜφ funkce, kterΘ souvisejφ se sprßvou verzφ. Jednß se nap°φklad o sprßvu vφce v∞tvφ verzφ (nelineßrnφ verze), vytvß°enφ aktivit, konfiguracφ a podobn∞.

Jeliko₧ je standard DeltaV velice rozsßhl² (RFC dokument mß 118 stran), p°iblφ₧φme si pouze zßkladnφ principy, p°iΦem₧ se zam∞°φme na vlastnosti zßkladnφho modelu podpory DeltaV a na zßkladnφ postupy p°i sprßv∞ verzφ.

Zavedenφ sprßvy verzφ

Pokud se rozhodneme vytvo°it verzi z novΘho dokumentu (HTML strßnky, souboru Wordu, PHP skriptu, zdrojovΘho k≤du), musφme zdroj nejd°φve za°adit do seznamu spravovan²ch soubor∙. To provedeme jednoduÜe odeslßnφm HTTP metody VERSION-CONTROL.

>>DOTAZ
VERSION-CONTROL /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0


>>ODPOV╠╧
HTTP/1.1 200 OK

Po odeslßnφ tΘto metody server vytvo°φ nov² objekt, kter² bude reprezentovat historii verzφ danΘho zdroje. (Zde zßle₧φ na zp∙sobu uklßdßnφ verzφ. Pokud by server vyu₧φval databßzi, pak je nap°φklad vytvo°en nov² zßznam v p°φsluÜnΘ tabulce. Pokud server vyu₧φvß pouze zßpisu na disk, pak vytvo°φ nov² adresß°.) ╚esky °eΦeno - vytvo°φ se adresß°, kam budou uklßdßny veÜkerΘ nov∞ vytvo°enΘ verze. SouΦasn∞ se vytvo°φ primßrnφ verze (root version), kde jakßkoli dalÜφ verze bude potomkem tΘto primßrnφ verze. V poslednφm kroku p°idß server danΘmu zdroji novou vlastnost DAV:checked-in (op∞t jsou vÜechny vlastnosti definovßny v jmennΘm prostoru DAV:), kterß identifikuje zdroj za°azen² do sprßvy verzφ.

Vytvo°enφ novΘ verze

P°edpoklßdejme, ₧e jsme soubor neco.html upravili a chceme vytvo°it novou verzi. Nastane problΘm, proto₧e soubor, kter² je serverem spravovßn, nenφ mo₧nΘ upravit. Jak metoda PUT (ulo₧enφ souboru prost°ednictvφm HTTP protokolu), tak metoda PROPPATCH (·prava vlastnostφ souboru viz WebDAV - prßce s vlastnostmi) v tomto p°φpad∞ sel₧ou.

Musφme pou₧φt metodu CHECKOUT, kterß odstranφ ze souboru vlastnost DAV:checked-in a umo₧nφ tak zm∞nu jeho vlastnostφ i obsahu. Jednoduch² p°φkaz serveru na doΦasnΘ odstran∞nφ zdroje ze sprßvy verzφ by mohl vypadat nßsledovn∞:

>>DOTAZ
CHECKOUT /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0


>>ODPOV╠╧
HTTP/1.1 200 OK
Cache-Control: no-cache

Nynφ m∙₧eme pou₧φt metodu PUT a aktualizovat soubor neco.html. Tφm sice zφskßme aktualizovan² soubor, ale jeÜt∞ nebyla vytvo°ena novß verze. Vytvo°enφ novΘ verze provedeme odeslßnφm metody CHECKIN, kterß op∞tovn∞ za°adφ zdroj do seznamu spravovan²ch zdroj∙ a vytvo°φ k n∞mu novou verzi (tzn. zkopφruje zdroj do adresß°e obsahujφcφ historii verzφ):

>>DOTAZ
CHECKIN /neco.html HTTP/1.1
Host: www.nekde.com
Content-Length: 0


>>ODPOV╠╧
HTTP/1.1 201 Created
Location: http://archiv.nekde.com/tov/23/ver/20
Cache-Control: no-cache

Nßzvy verzφ

P°i vytvß°enφ jednotliv²ch verzφ jsou k soubor∙m serverem p°ipojovßny i nßzvy verzφ. Tyto nßzvy, kterΘ tvo°φ hodnotu vlastnosti (elementu) DAV:version-name, vÜak klient nem∙₧e ovlivnit a slou₧φ pouze pro ·Φely serveru (tzn. rozpoznßnφ jednotliv²ch verzφ v historii).

Aby mohl u₧ivatel dßt jednotliv²m verzφm r∙znΘ nßzvy nebo je mohl pop°φpad∞ dßle modifikovat, musφ vyu₧φt HTTP metody LABEL a explicitn∞ zadat nßzev verze. P°ejmenovßnφ aktußlnφ verze souboru neco.html by mohlo vypadat nßsledujφcφm zp∙sobem:

>>DOTAZ
LABEL /neco.html HTTP/1.1
Host: www.nekde.com
Content-type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<D:label xmlns:D="DAV:">
   <D:set>
      <!-- Oznaceni aktualni verze za beta verzi -->
      <D:label-name>beta_verze</D:label-name>
   </D:set>
</D:label>


>>ODPOV╠╧
HTTP/1.1 200 OK
Cache-Control: no-cache

DalÜφ vlastnosti

Ka₧d² software pro sprßvu verzφ (nap°φklad CVS nebo RCS) musφ umo₧≥ovat nßhradu aktußlnφ verze n∞kterou z p°edchßzejφcφch verzφ. Ani DeltaV nenφ v tomto v²jimkou. K aktualizaci slou₧φ HTTP metoda UPDATE. V p°ipojenΘm XML dokumentu je nutnΘ specifikovat URI adresu verze, kterß mß nahradit aktußlnφ verzi. (Pro zφskßnφ vÜech verzφ jednφm dotazem slou₧φ metoda REPORT, p°iΦem₧ p°ipojen² XML dokument specifikuje, jakΘ informace mß server v XML dokumentu vrßtit.)

DalÜφmi funkcemi, kterΘ jsme nezmφnili, jsou metody a XML elementy, kterΘ se t²kajφ:

  • vytvß°enφ pracovnφch ploch (workspaces), kterΘ umo₧≥ujφ spolupracovat vφce u₧ivatel∙m na stejn²ch souborech, p°iΦem₧ ka₧d² u₧ivatel vytvß°φ verze odd∞len∞ od ostatnφch
  • automatickΘ vytvß°enφ verzφ
  • vytvß°enφ aktivit

Aplikace

Existujφ specializovanΘ servery pro podniky (nap°φklad Tamino Server), kterΘ se specializujφ na sprßvu dokument∙ a pro p°φstup k dokument∙m pou₧φvajφ WebDAV spolu s technologiφ DASL a DeltaV. OvÜem poΦet t∞chto server∙ je relativn∞ mal².

Z oblasti open source projekt∙ bych rßd zmφnil dva projekty. Prvnφm je projekt Catacomb, kter² krom∞ podpory DASLu podporuje i lineßrnφ verze pomocφ DeltaV. Projekt Catacomb je modul pro webov² server Apache. Druh²m projektem, kter² se zam∞°uje pouze na DeltaV, je Subversion. Cφlem tohoto projektu je vytvo°it konkurenci k CVS. Aktußlnφ verze mß sice teprve Φφslo 0.25, ale jejφ pou₧itelnost dokazuje, ₧e systΘm Subversion hostφ mimo jinΘ takΘ sßm sebe.

Zßv∞r

Na zßv∞r bych jeÜt∞ jednou rßd p°ipomn∞l, ₧e jsme nezmφnili vÜechny vlastnosti DeltaV. Jejich opravdu hodn∞ a jejich pou₧itφ je relativn∞ nßroΦnΘ, co₧ platφ obzvlßÜ¥ pro rozÜφ°en² model DeltaV.

VÜechny t°i technologie (WebDAV, DASL a DeltaV) spoleΦn∞ umo₧≥ujφ vytvo°it systΘm pro sprßvu obsahu (Content Management), p°iΦem₧ jsou zalo₧eny na otev°en²ch a vÜeobecn∞ p°ijφman²ch standardech (HTTP a XML), Φφm₧ lze v²razn∞ snφ₧it nßklady na tvorbu takovΘho systΘmu.

Kouba, èt∞pßn (29.7. 2003)