本手册用于描述 Subversion 1.2。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 https://svnbooks.subversion.org.cn/ 并查阅适合您 Subversion 版本的书籍。

附录 B. WebDAV 和自动版本控制

目录

基本 WebDAV 概念
原始 WebDAV
DeltaV 扩展
Subversion 和 DeltaV
自动版本控制
客户端互操作性
独立 WebDAV 应用程序
Microsoft Office、Dreamweaver、Photoshop
Cadaver、DAV Explorer
文件浏览器 WebDAV 扩展
Microsoft Web Folders
Nautilus、Konqueror
WebDAV 文件系统实现
WebDrive、NetDrive
Mac OS X
Linux davfs2

WebDAV 是 HTTP 的扩展,作为文件共享的标准越来越流行。如今的操作系统正在变得越来越 Web 化,许多操作系统现在都内置了支持挂载 WebDAV 服务器导出的“共享”。

如果您使用 Apache/mod_dav_svn 作为 Subversion 网络服务器,那么在某种程度上,您也运行着 WebDAV 服务器。本附录介绍了该协议的本质、Subversion 如何使用它以及 Subversion 与其他 WebDAV 兼容软件的互操作性。

基本 WebDAV 概念

本节简要概述了 WebDAV 背后的理念。它将为理解客户端和服务器之间的 WebDAV 兼容性问题奠定基础。

原始 WebDAV

RFC 2518 定义了一组概念和相应的 HTTP 1.1 扩展方法,这些方法使 Web 成为更加通用的读写媒介。基本理念是 WebDAV 兼容的 Web 服务器可以充当通用的文件服务器;客户端可以挂载共享文件夹,这些文件夹的行为类似于 NFS 或 SMB 文件系统。

然而,悲剧的是,RFC 2518 WebDAV 规范没有提供任何版本控制模型,尽管 DAV 中包含了“V”。基本的 WebDAV 客户端和服务器假定每个文件或目录仅存在一个版本,并且可以重复覆盖。

以下是基本 WebDAV 中介绍的概念和术语:

资源

WebDAV 术语将任何服务器端对象(可以用 URI 描述)称为资源

新的写入方法

除了标准的 HTTP PUT 方法(创建或覆盖 Web 资源)之外,WebDAV 还定义了新的 COPYMOVE 方法,用于复制或重新排列资源。

集合

集合是 WebDAV 术语,用于指代资源的集合。在大多数情况下,它类似于目录。文件资源可以用 PUT 方法写入或创建,而集合资源可以用新的 MKCOL 方法创建。

属性

这与 Subversion 中的概念相同——附加到文件和集合的元数据。客户端可以使用新的 PROPFIND 方法列出或检索附加到资源的属性,并可以使用 PROPPATCH 方法更改它们。某些属性完全由用户创建和控制(例如,名为“color”的属性),而其他属性完全由 WebDAV 服务器创建和控制(例如,包含文件的最后修改时间的属性)。前者称为死属性,后者称为活属性

锁定

WebDAV 服务器可能会决定向客户端提供锁定功能——规范的这部分是可选的,但大多数 WebDAV 服务器都提供了此功能。如果存在,则客户端可以使用新的 LOCKUNLOCK 方法来协调对资源的访问。在大多数情况下,这些方法用于创建独占写锁(如 “锁定-修改-解锁解决方案”部分中所述),但一些服务器实现也允许共享写锁。

访问控制

更近期的规范 (RFC 3744) 定义了一个系统,用于定义 WebDAV 资源的访问控制列表 (ACL)。一些客户端和服务器已开始实现此功能。

DeltaV 扩展

由于 RFC 2518 遗漏了版本控制概念,因此另一个委员会负责编写 RFC 3253,该规范将版本控制添加到 WebDAV,即“DeltaV”。WebDAV/DeltaV 客户端和服务器通常被称为“DeltaV”程序,因为 DeltaV 意味着存在基本的 WebDAV。

DeltaV 引入了一系列新的首字母缩略词,但不要害怕。这些概念非常简单。

每个资源的版本控制

与 CVS 和其他版本控制系统一样,DeltaV 假设每个资源都有无限数量的状态。客户端首先使用新的 VERSION-CONTROL 方法将资源置于版本控制之下。

服务器端工作副本模型

一些 DeltaV 服务器支持在服务器上创建虚拟工作区的功能,所有工作都在该工作区中执行。客户端使用 MKWORKSPACE 方法创建私有区域,然后通过“检出”特定资源到工作区、编辑它们并“检入”它们来指示它们想要更改这些资源。在 HTTP 术语中,方法的顺序将是 CHECKOUTPUTCHECKIN

客户端端工作副本模型

一些 DeltaV 服务器还支持客户端可能在本地磁盘上拥有私有工作副本的想法。当客户端想要将更改提交到服务器时,它首先使用 MKACTIVITY 方法创建一个临时服务器事务(称为活动)。然后,客户端对要更改的每个资源执行 CHECKOUT 操作,并发送 PUT 请求。最后,客户端执行 CHECKIN 资源,或发送 MERGE 请求以一次检入所有资源。

配置

DeltaV 允许您定义灵活的资源集合,称为“配置”,它们不一定对应于特定目录。配置可以指向文件的特定版本,然后可以创建“基线”快照,类似于标签。

可扩展性

DeltaV 定义了一种新方法 REPORT,它允许客户端和服务器执行自定义数据交换。虽然 DeltaV 定义了客户端可以请求的许多标准化历史报告,但服务器也可以自由地定义自定义报告。客户端发送一个带有适当标签的 XML 主体的 REPORT 请求,其中包含自定义数据;如果服务器理解特定的报告类型,则它会使用同样自定义的 XML 主体进行响应。此技术非常类似于 XML-RPC。

TortoiseSVN 官方中文版 1.14.7 发布