本文本尚在编撰中,内容可能随时变更,可能无法准确描述 Apache™ Subversion® 软件的任何已发布版本。将本页面添加书签或向其他人推荐本页面可能不是明智之举。请访问 http://svnbooks.subversion.org.cn/ 查看本手册的稳定版本。
所有 WebDAV 客户端都属于以下三种类别之一:独立应用程序、文件资源管理器扩展或文件系统实现。这些类别广泛地定义了用户可用的 WebDAV 功能类型。 表 C.1,“常见的 WebDAV 客户端” 提供了我们的分类以及一些常见的 WebDAV 支持软件的简要说明。您可以在以下各节中找到有关这些软件产品的更多详细信息,以及它们的常规类别。
表 C.1. 常见的 WebDAV 客户端
软件 | 类型 | Windows | Mac | Linux | 描述 |
---|---|---|---|---|---|
Adobe Photoshop | 独立 WebDAV 应用程序 | X | 图像编辑软件,允许直接从 WebDAV URL 打开和写入文件。 | ||
cadaver | 独立 WebDAV 应用程序 | X | X | 支持文件传输、树操作和锁定操作的命令行 WebDAV 客户端 | |
DAV Explorer | 独立 WebDAV 应用程序 | X | X | X | 用于浏览 WebDAV 共享的 Java GUI 工具 |
Adobe Dreamweaver | 独立 WebDAV 应用程序 | X | 能够直接从 WebDAV URL 读取和写入数据的 Web 制作软件 | ||
Microsoft Office | 独立 WebDAV 应用程序 | X | 办公效率套件,包含几个能够直接从 WebDAV URL 读取和写入数据的组件 | ||
Microsoft Web Folders | 文件资源管理器 WebDAV 扩展 | X | 能够对 WebDAV 共享执行树操作的 GUI 文件资源管理器程序 | ||
GNOME Nautilus | 文件资源管理器 WebDAV 扩展 | X | 能够对 WebDAV 共享执行树操作的 GUI 文件资源管理器 | ||
KDE Konqueror | 文件资源管理器 WebDAV 扩展 | X | 能够对 WebDAV 共享执行树操作的 GUI 文件资源管理器 | ||
Mac OS X | WebDAV 文件系统实现 | X | 内置支持挂载 WebDAV 共享的操作系统。 | ||
Novell NetDrive | WebDAV 文件系统实现 | X | 驱动器映射程序,用于将 Windows 驱动器号分配给挂载的远程 WebDAV 共享 | ||
SRT WebDrive | WebDAV 文件系统实现 | X | 文件传输软件,除其他功能外,还允许将 Windows 驱动器号分配给挂载的远程 WebDAV 共享 | ||
davfs2 | WebDAV 文件系统实现 | X | 允许您挂载 WebDAV 共享的 Linux 文件系统驱动程序 |
WebDAV 应用程序是指与 WebDAV 服务器通信的程序。我们将介绍一些使用这种 WebDAV 支持的最流行的程序。
在 Windows 上,一些著名的应用程序包含集成的 WebDAV 客户端功能,例如 Microsoft 的 Office,[86] Adobe 的 Photoshop 和 Dreamweaver 程序。它们能够直接打开和保存到 URL,并在编辑文件时倾向于大量使用 WebDAV 锁定。
请注意,虽然这些程序中的许多也存在于 Mac OS X 上,但它们似乎不支持该平台上的 WebDAV。实际上,在 Mac OS X 上,
对话框根本不允许用户输入路径或 URL。很可能是 WebDAV 功能故意从这些程序的 Macintosh 版本中删除,因为 OS X 已经为 WebDAV 提供了如此出色的底层文件系统支持。cadaver 是一个简陋的 Unix 命令行程序,用于浏览和更改 WebDAV 共享。它使用 neon HTTP 库,这并不奇怪,因为 neon 和 cadaver 都是由同一个作者编写的。cadaver 是自由软件(GPL 许可),可在 https://notroj.github.io/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 的许可证,可在 https://www.davexplorer.org/ 获取。它执行 cadaver 执行的所有操作,但具有便携性和更友好的 GUI 应用程序的优势。它也是首批支持新的 WebDAV 访问控制协议 (RFC 3744) 的客户端之一。
当然,DAV Explorer 的 ACL 支持在这种情况下毫无用处,因为 mod_dav_svn 不支持它。cadaver 和 DAV Explorer 都支持一些有限的 DeltaV 命令,但这一点也不有用,因为它们不允许 MKACTIVITY
请求。但这并不重要;我们假设所有这些客户端都在针对自动版本控制的存储库进行操作。
一些流行的文件资源管理器 GUI 程序支持 WebDAV 扩展,允许用户像浏览本地计算机上的另一个目录一样浏览 DAV 共享,并对该共享中的项目执行基本的树编辑操作。例如,Windows 资源管理器能够将 WebDAV 服务器浏览为一个 “网络位置。” 用户可以将文件拖放到桌面,或者以通常的方式重命名、复制或删除文件。但由于它只是文件资源管理器的功能,因此 DAV 共享对普通应用程序不可见。所有 DAV 交互都必须通过资源管理器界面进行。
Microsoft 是 WebDAV 规范的最初支持者之一,并在 Windows 98 中首次发布了一个客户端,称为 Web Folders。该客户端也随 Windows NT 4.0 和 Windows 2000 一起发布。
最初的 Web Folders 客户端是 Explorer 的一个扩展,Explorer 是用于浏览文件系统的主要 GUI 程序。它的工作效果很好。在 Windows 98 中,如果 Web Folders 在“我的电脑”中不可见,则可能需要显式安装该功能。在 Windows 2000 中,只需添加一个新的 “网络位置,”,输入 URL,WebDAV 共享就会弹出来供浏览。
随着 Windows XP 的发布,Microsoft 开始发布 Web Folders 的新实现,称为 WebDAV Mini-Redirector。新实现是文件系统级客户端,允许将 WebDAV 共享挂载为驱动器号。不幸的是,这种实现存在难以置信的错误。该客户端通常尝试将 HTTP URL (http://host/repos
) 转换为 UNC 共享表示法 (\\host\repos
);它也经常尝试使用 Windows 域身份验证来响应基本身份验证 HTTP 质询,将用户名发送为 HOST\username
。这些互操作性问题非常严重,在网络上许多地方都有记录,让许多用户感到沮丧。即使是 Apache 的 WebDAV 模块的原始作者 Greg Stein 也直言不讳地指出,XP Web Folders 根本无法在 Apache 服务器上运行。
Windows Vista 最初的 Web Folders 实现似乎与 XP 的几乎相同,因此存在相同的问题。幸运的是,Microsoft 可能会在 Vista Service Pack 中修复这些问题。
但是,似乎存在针对 XP 和 Vista 的解决方法,允许 Web Folders 在 Apache 上运行。用户主要报告了这些技巧取得了成功,因此我们将在此处转发它们。
在 Windows XP 上,您有两个选择。首先,在 Microsoft 网站上搜索更新 KB907306,““Web Folders 软件更新。” 这可能会解决所有问题。如果无效,似乎系统中仍然保留着原始的 XP 之前的 Web Folders 实现。您可以通过转到“网络位置”并添加一个新的网络位置来找到它。出现提示时,输入存储库的 URL,但 包含端口号 在 URL 中。例如,您应该输入 http://host/repos
而不是 http://host:80/repos
。使用您的 Subversion 凭据响应任何身份验证提示。
在 Windows Vista 上,相同的 KB907306 更新可能会清除所有内容。但可能仍然存在其他问题。一些用户报告说 Vista 认为所有 http://
连接都不安全,因此将始终无法通过 https://
进行连接以外的任何方式通过 Apache 进行身份验证质询。如果您无法通过 SSL 连接到 Subversion 存储库,则可以调整系统注册表以关闭此行为。只需将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel
键的值从 1
更改为 2
。最后的警告:确保将 Web Folders 设置为指向存储库的根目录 (/
),而不是某些子目录,例如 /trunk
。Vista Web Folders 似乎只能在存储库根目录上运行。
一般来说,虽然这些解决方法可能对您有效,但您可能会获得更好的整体体验,可以使用第三方 WebDAV 客户端,例如 WebDrive 或 NetDrive。
Nautilus 是 GNOME 桌面 (https://www.gnome.org) 的官方文件管理器/浏览器,Konqueror 是 KDE 桌面 (https://kde.org) 的管理器/浏览器。这两个应用程序都内置了资源管理器级 WebDAV 客户端,并且可以在针对自动版本控制的存储库时正常运行。
在 GNOME 的 Nautilus 中,选择
菜单项并在出现的对话框中输入 URL。然后,存储库应该像任何其他文件系统一样显示。在 KDE 的 Konqueror 中,您需要在位置栏中输入 URL 时使用 webdav://
方案。如果您输入 http://
URL,Konqueror 将像普通网页浏览器一样工作。您可能会看到 mod_dav_svn 生成的通用 HTML 目录列表。当您输入 webdav://host/repos
而不是 http://host/repos
时,Konqueror 将变为 WebDAV 客户端,并将存储库显示为文件系统。
WebDAV 文件系统实现可以说是最好的 WebDAV 客户端类型。它作为底层文件系统模块实现,通常在操作系统的内核中。这意味着 DAV 共享像任何其他网络文件系统一样挂载,类似于在 Unix 上挂载 NFS 共享或在 Windows 中将 SMB 共享附加为驱动器号。因此,这种类型的客户端为所有程序提供了完全透明的读/写 WebDAV 访问。应用程序甚至不知道正在进行 WebDAV 请求。
WebDrive 和 NetDrive 都是优秀的商业产品,允许将 WebDAV 共享附加为 Windows 中的驱动器号。因此,您可以像操作真实本地硬盘一样轻松地在这些 WebDAV 支持的伪驱动器的内容上进行操作,并且方式相同。您可以从 South River Technologies (https://webdrive.com/) 购买 WebDrive。Novell 的 NetDrive 可在网上免费获取,但要求用户拥有 NetWare 许可证。
苹果的 OS X 操作系统集成了一个文件系统级别的 WebDAV 客户端。在 Finder 中,选择 mount 命令和 webdav
文件系统类型,从 Darwin 终端挂载 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 内核的一个文件系统模块,其开发工作由 https://savannah.nongnu.org/projects/davfs2 组织。安装 davfs2 后,您可以使用常用的 Linux mount 命令挂载 WebDAV 网络共享。
$ mount.davfs http://host/repos /mnt/dav