本文档旨在描述 Subversion 1.4。如果您运行的是更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并参考适合您 Subversion 版本的书籍版本。

客户端互操作性

所有 WebDAV 客户端都属于以下三类之一:独立应用程序、文件资源管理器扩展或文件系统实现。这些类别大致定义了用户可用的 WebDAV 功能类型。表 C.1,“常见 WebDAV 客户端” 提供了我们的分类和对一些常见 WebDAV 启用软件的简要描述。有关这些软件产品的更多详细信息,以及它们的一般类别,请参见以下各节。

表 C.1. 常见 WebDAV 客户端

软件类型WindowsMacLinux描述
Adobe Photoshop独立 WebDAV 应用程序X  图像编辑软件,允许直接从 WebDAV URL 打开和写入。
Cadaver独立 WebDAV 应用程序 XX支持文件传输、树和锁定操作的命令行 WebDAV 客户端
DAV Explorer独立 WebDAV 应用程序XXX用于浏览 WebDAV 共享的 Java GUI 工具
Macromedia Dreamweaver独立 WebDAV 应用程序X  能够直接从 WebDAV URL 读取和写入的 Web 制作软件
Microsoft Office独立 WebDAV 应用程序X  办公生产力套件,包含几个能够直接从 WebDAV URL 读取和写入的组件。
Microsoft Web Folders文件资源管理器 WebDAV 扩展X  GUI 文件资源管理器程序,能够对 WebDAV 共享执行树操作。
GNOME Nautilus文件资源管理器 WebDAV 扩展  XGUI 文件资源管理器,能够对 WebDAV 共享执行树操作。
KDE Konqueror文件资源管理器 WebDAV 扩展  XGUI 文件资源管理器,能够对 WebDAV 共享执行树操作。
Mac OS XWebDAV 文件系统实现 X 操作系统内置支持挂载 WebDAV 共享。
Novell NetDriveWebDAV 文件系统实现X  用于将 Windows 驱动器盘符分配给已挂载的远程 WebDAV 共享的驱动器映射程序。
SRT WebDriveWebDAV 文件系统实现X  文件传输软件,除其他功能外,还允许将 Windows 驱动器盘符分配给已挂载的远程 WebDAV 共享。
davfs2WebDAV 文件系统实现  X允许您挂载 WebDAV 共享的 Linux 文件系统驱动程序。

独立 WebDAV 应用程序

WebDAV 应用程序是指与 WebDAV 服务器进行 WebDAV 协议通信的程序。我们将介绍一些最受欢迎的此类 WebDAV 支持程序。

Microsoft Office、Dreamweaver、Photoshop

在 Windows 上,有几个众所周知的应用程序包含集成的 WebDAV 客户端功能,例如微软的 Office,[63] Adobe 的 Photoshop 和 Macromedia 的 Dreamweaver 程序。它们能够直接打开和保存到 URL,并且在编辑文件时倾向于大量使用 WebDAV 锁。

请注意,尽管其中许多程序也适用于 Mac OS X,但它们似乎不支持该平台上的 WebDAV。事实上,在 Mac OS X 上,文件->打开 对话框根本不允许您键入路径或 URL。WebDAV 功能很可能被故意从这些程序的 Macintosh 版本中删除,因为 OS X 已经为 WebDAV 提供了如此出色的底层文件系统支持。

Cadaver、DAV Explorer

Cadaver 是一个基本的 Unix 命令行程序,用于浏览和更改 WebDAV 共享。与 Subversion 客户端一样,它使用 neon HTTP 库,这并不奇怪,因为 neon 和 cadaver 都是由同一个作者编写的。Cadaver 是自由软件(GPL 许可证),可在 http://www.webdav.org/cadaver/ 获取。

使用 cadaver 类似于使用命令行 FTP 程序,因此它对于基本的 WebDAV 调试非常有用。它可以在紧要关头用于上传或下载文件,还可以用于检查属性,以及复制、移动、锁定或解锁文件。

$ cadaver http://host/repos
dav:/repos/> ls
Listing collection `/repos/': succeeded.
Coll: > foobar                                 0  May 10 16:19
      > playwright.el                       2864  May  4 16:18
      > proofbypoem.txt                     1461  May  5 15:09
      > westcoast.jpg                      66737  May  5 15:09

dav:/repos/> put README
Uploading README to `/repos/README':
Progress: [=============================>] 100.0% of 357 bytes succeeded.

dav:/repos/> get proofbypoem.txt
Downloading `/repos/proofbypoem.txt' to proofbypoem.txt:
Progress: [=============================>] 100.0% of 1461 bytes succeeded.

DAV Explorer 是另一个独立的 WebDAV 客户端,用 Java 编写。它使用类似 Apache 的免费许可证,可在 http://www.ics.uci.edu/~webdav/ 获取。DAV Explorer 可以执行 cadaver 完成的所有操作,但具有可移植性和更友好的 GUI 应用程序的优势。它也是首批支持新的 WebDAV 访问控制协议(RFC 3744)的客户端之一。

当然,DAV Explorer 的 ACL 支持在这种情况下毫无用处,因为 mod_dav_svn 不支持它。Cadaver 和 DAV Explorer 都支持一些有限的 DeltaV 命令的事实也不是特别有用,因为它们不允许 MKACTIVITY 请求。但这并不重要;我们假设所有这些客户端都在与自动版本控制存储库进行交互。

文件资源管理器 WebDAV 扩展

一些流行的文件资源管理器 GUI 程序支持 WebDAV 扩展,这些扩展允许用户浏览 DAV 共享,就像它只是本地计算机上的另一个目录一样,并对该共享中的项目执行基本的树编辑操作。例如,Windows 资源管理器能够将 WebDAV 服务器浏览为“网络位置”。用户可以将文件拖放到桌面,也可以以通常的方式重命名、复制或删除文件。但由于它只是文件资源管理器的功能,因此 DAV 共享对普通应用程序不可见。所有 DAV 交互都必须通过资源管理器界面进行。

Microsoft Web Folders

微软是 WebDAV 规范的最初支持者之一,并在 Windows 98 中首次发布了一个名为“Web Folders”的客户端。该客户端也随 Windows NT4 和 2000 一起发布。

原始的 Web Folders 客户端是 Explorer 的扩展,Explorer 是用于浏览文件系统的主要 GUI 程序。它运行良好。在 Windows 98 中,如果“我的电脑”中没有显示 Web Folders,则可能需要显式安装该功能。在 Windows 2000 中,只需添加一个新的“网络位置”,输入 URL,WebDAV 共享就会弹出以供浏览。

随着 Windows XP 的发布,微软开始发布一个名为“WebDAV 小型重定向器”的新版 Web Folders。新的实现是一个文件系统级客户端,允许将 WebDAV 共享挂载为驱动器盘符。不幸的是,该实现存在大量错误。客户端通常尝试将 http URL (http://host/repos) 转换为 UNC 共享表示法 (\\host\repos);它还经常尝试使用 Windows 域身份验证来响应基本身份验证 HTTP 质询,以 HOST\username 的形式发送用户名。这些互操作性问题非常严重,在网络上的许多地方都有记录,让许多用户感到沮丧。即使是 Apache WebDAV 模块的最初作者 Greg Stein 也建议不要尝试将 XP Web Folders 用于 Apache 服务器。

事实证明,原始的“仅资源管理器”Web Folders 实现并没有在 XP 中消失,只是被隐藏了。您仍然可以通过以下方法找到它。

  1. 转到“网络位置”。

  2. 添加新的网络位置。

  3. 出现提示时,输入存储库的 URL,但在 URL 中包含端口号。例如,http://host/repos 应改为输入 http://host:80/repos

  4. 响应任何身份验证提示。

还有许多其他传闻中的解决方法,但似乎没有一种方法适用于所有版本的 Windows XP 及其修补程序级别。在我们的测试中,只有之前的方法在每个系统上都能始终如一地工作。WebDAV 社区的普遍共识是,您应该避免使用新的 Web Folders 实现,而应使用旧的实现,并且如果您需要 Windows XP 的真正文件系统级客户端,则应使用第三方程序,例如 WebDrive 或 NetDrive。

最后一个提示:如果您尝试使用 XP Web Folders,请确保您拥有来自微软的最新版本。例如,微软在 2005 年 1 月发布了一个已修复错误的版本,可在 http://support.microsoft.com/?kbid=892211 获取。特别是,此版本已知可以修复一个错误,即浏览 DAV 共享时显示意外的无限递归。

Nautilus、Konqueror

Nautilus 是 GNOME 桌面 (http://www.gnome.org) 的官方文件管理器/浏览器,Konqueror 是 KDE 桌面 (http://www.kde.org) 的管理器/浏览器。这两个应用程序都内置了资源管理器级别的 WebDAV 客户端,并且可以与自动版本控制存储库完美交互。

在 GNOME 的 Nautilus 中,从 文件菜单 中选择 打开位置 并输入 URL。存储库应像任何其他文件系统一样显示。

在 KDE 的 Konqueror 中,您需要在位置栏中输入 URL 时使用 webdav:// 方案。如果您输入 http:// URL,Konqueror 将像普通的 Web 浏览器一样运行。您可能会看到 mod_dav_svn 生成的通用 HTML 目录列表。通过输入 webdav://host/repos 而不是 http://host/repos,Konqueror 将变为 WebDAV 客户端,并以文件系统的形式显示存储库。

WebDAV 文件系统实现

WebDAV 文件系统实现可以说是最好的 WebDAV 客户端类型。它作为底层文件系统模块实现,通常在操作系统的内核中实现。这意味着 DAV 共享就像任何其他网络文件系统一样被挂载,类似于在 Unix 上挂载 NFS 共享,或在 Windows 中将 SMB 共享附加为驱动器盘符。因此,这种类型的客户端为所有程序提供了完全透明的读/写 WebDAV 访问。应用程序甚至不知道 WebDAV 请求正在发生。

WebDrive、NetDrive

WebDrive 和 NetDrive 都是出色的商业产品,允许将 WebDAV 共享附加为 Windows 中的驱动器盘符。我们对这些产品一直都很满意。在撰写本文时,WebDrive 可以从 South River Technologies (http://www.southrivertech.com) 购买。NetDrive 与 Netware 一起提供,免费提供,您可以通过在网上搜索“netdrive.exe”找到它。虽然它可以在线免费获得,但用户需要拥有 Netware 许可证。(如果这些听起来很奇怪,那您并不孤单。请查看 Novell 网站上的此页面:http://www.novell.com/coolsolutions/qna/999.html)

Mac OS X

Apple 的 OS X 操作系统集成了文件系统级 WebDAV 客户端。在 Finder 中,从 前往菜单 中选择 连接到服务器 项目。输入 WebDAV URL,它会作为磁盘出现在桌面上,就像任何其他已挂载的卷一样。您也可以通过在 Darwin 终端中使用 webdav 文件系统类型和 mount 命令来挂载 WebDAV 共享。

$ mount -t webdav http://svn.example.com/repos/project /some/mountpoint
$

请注意,如果您的 mod_dav_svn 版本低于 1.2,OS X 将拒绝将共享挂载为读写;它将显示为只读。这是因为 OS X 坚持对读写共享进行锁定支持,而锁定文件的功能直到 Subversion 1.2 才出现。

最后提醒一下:OS X 的 WebDAV 客户端有时对 HTTP 重定向过于敏感。如果 OS X 根本无法挂载存储库,您可能需要在 Apache 服务器的 httpd.conf 中启用 BrowserMatch 指令。

BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

Linux davfs2

Linux davfs2 是 Linux 内核的一个文件系统模块,其开发位于 http://dav.sourceforge.net/。安装完成后,可以使用 Linux 的常规 mount 命令挂载 WebDAV 网络共享。

$ mount.davfs http://host/repos /mnt/dav


[63] 出于某种原因,微软 Access 中已移除 WebDAV 支持,但 Office 套件的其他组件中仍存在。