自动版本化交互性

在这个小节,我们会描述最普通的原始WebDAV客户端(写作的时刻),和它们是如何与使用SVNAutoversioning指示的mod_dav_svn服务器的运作。RFC 2518是一个有点大,并且有一点太灵活。每个WebDAV客户端的行为都有些许区别,并且产生许多不同的小问题。

Windows 98、2000和XP有一个集成的WebDAV客户端叫做“网络文件夹”,在Windows 98,这个特性需要明确安装;如果提供,一个“网络文件夹”就会出现在我的电脑,在Windows 2000和XP,只需要简单得打开我的网络位置,运行添加网络位置图标。当出现提示,输入一个WebDAV的URL,我的网络位置中就会出现一个共享文件夹。

大多数写操作对于自动版本化的mod_dav_svn服务器工作正常,但是有一些问题:

Apple的OS X操作系统也集成了WebDAV客户端,从Finder选择Go菜单的“Connect to Server”,输入一个WebDAV的URL,它会作为一个磁盘在桌面出现,就像任何文件服务器。[49]

很不幸,客户端拒绝与一个自动版本化的mod_dav_svn工作,因为它缺乏LOCK支持,Mac OS X在初始化HTTP的OPTIONS特性交换时会发现缺失了LOCK能力,因而决定以只读方式装配Subversion版本库,之后,不可以进行写操作。为了将版本库按照读写方式装配,你必须使用前面讨论的mod_dav_lock技巧。一旦锁定看起来工作了,共享会运作良好:文件可以直接以读/写模式打开,尽管每次存储操作会导致客户端对临时位置执行一个PUT,对原文件的DELETE操作和把临时资源MOVE到原文件。每次存盘会产生三个新的Subversion修订版本!

还要警告一点:OS X的WebDAV客户端可以对HTTP重定向完全敏感,如果你不能装配版本库,你可以在httpd.conf开启BrowserMatch指示:

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