附錄 C. WebDAV 和自動版本

目錄

什麼是WebDAV ?
自動版本化
客戶端交互性
獨立的 WebDAV 應用程序
文件瀏覽器 WebDAV 擴展
WebDAV文件系統實現

WebDAV是HTTP的一個擴展,作為一個文件共享的標準不斷發展。當今的操作系統變得極端的web化,許多內建了對裝配WebDAV伺服器導出的「共享」的支持。

如果你使用Apache/mod_dav_svn作為你的Subversion網路伺服器,某種程度上,你也是在運行一個WebDAV伺服器。這個附錄提供了這種協議一些背景知識,Subversion如何使用它,Subversion如何和認識WebDAV的軟體交互工作。

什麼是WebDAV ?

DAV的意思是「Distributed Authoring and Versioning」。RFC 2518為HTTP 1.1定義了一組概念和附加擴展方法來把web變成一個更加普遍的讀/寫媒體,基本思想是一個WebDAV兼容的web伺服器可以像普通的文件伺服器一樣工作;客戶端可以通過HTTP裝配類似於NFS或SMB的WebDAV共享文件夾。

悲慘的是,RFC規範並沒有提供任何版本控制模型。基本的DAV客戶端和伺服器只是假定每個文件或目錄只有一個版本存在,可以重複的覆蓋。

因為RFC 2518漏下了版本概念,幾年之後,另一個委員會留下來負責撰寫RFC 3253來新增WebDAV的版本化,也就是「DeltaV」。WebDAV/DeltaV客戶端和伺服器經常叫做「DeltaV」客戶端和伺服器,因為DeltaV暗含了基本的WebDAV。

最初的WebDAV標準得到了廣泛的成功,所有的現代操作系統擁有內建的(後面有詳細資料)對普通WebDAV的支持,許多流行的應用程序也可以使用WebDAV—Microsoft Office,Dreamweaver和Photoshop。在伺服器方面,Apache從1998年就開始支持WebDAV,並被認為是一個事實上的開源標準,也有許多商業的WebDAV伺服器,例如Microsoft的IIS。

不幸的是,DeltaV沒有這樣的成功,很難尋找到任何DeltaV客戶端和伺服器。只有一些不太出名的商業產品,因此很難測試交互性,不清楚為什麼DeltaV還這樣停滯,一些人說規範太複雜了,還有些人認為儘管DeltaV的特性有很大的吸引力(即使最新的技術用戶也喜歡使用網路文件共享),版本控制特性對大多數用戶還不是這樣有趣和必須。最後,有些人認為DeltaV還這樣不流行主要是因為一直沒有開源的伺服器產品實現它。

當Subversion還在設計階段時,使用Apache的httpd作為主要網路伺服器就是一個很好的想法,已經有了支持WebDAV服務的模塊(mod_dav_svn)。DeltaV有一個很新的規範,希望就是Subversion伺服器模塊最終能夠成為一個開源的DeltaV參考實現,但非常不幸,DeltaV得版本模型過於詳細,與Subversion的模型並不匹配,雖然有些概念可以對應起來,但有些則不能。

這是什麼意思呢?

首先,Subversion客戶端不是一個完全實現的DeltaV客戶端,它需要從伺服器得到DeltaV不能提供的東西,因此非常依賴於只有mod_dav_svn理解的Subversion特定的REPORT請求。

其次,mod_dav_svn不是一個完全的DeltaV服務,許多與Subversion不相關的DeltaV規範還沒有實現。

在開發者社群一直有這樣的討論,是否值得彌補這種形勢。改變Subversion的設計來匹配DeltaV看起來並不現實,所以可能沒有辦法讓客戶端從普通的DeltaV伺服器上得到所有的東西。另一方面,mod_dav_svn可以繼續開發來實現所有的DeltaV,但缺乏這樣做的動力—幾乎沒有能與之交戶的DeltaV客戶端。