今天我尝试将更改推送到运行webdav的apache(2.2.x)上的共享存储库(通过HTTPS)。david -目录中的存储库是我的工作目录的克隆。启用了Option nouupdate。
为了继续,我将dev -directory/repository映射为网络驱动器,并将repository设置为push到"y:/"当我尝试从工作台推出异常"aborted, ret 255"被抛出。
% hg --repository C:wampwwwommon push y:
pushing to y:
searching for changes
abort: Y:.hg/store/journal: The system cannot find the file specified
[command returned code 255 Thu Jun 20 12:08:28 2013]
从命令行push抛出:
pushing to y:
searching for changes
abort: y:.hg/store/journal: The system cannot find the file specified
Exception AttributeError: "'transaction' object has no attribute 'file'" in
<bound method transaction.__del__ of <mercurial.transaction.transaction object>>
我试图将路径更改为directory,因为侧交换分隔符对我来说看起来很奇怪。但是没有成功。
进一步信息:我不使用hgweb或任何基于cgi脚本的版本。
EDIT关于这个问题的多个google条目让我想到,将更改推送到webDAV提供的存储库是不完全可能的。此外,我必须使用hgWeb来解决这个问题。
但是为什么我必须这样做呢?我的想法是webDAV是有写作能力的。由于我将目录映射为网络驱动器- mercurial应该能够将更改推送到web服务器,就像它对本地目录所做的那样。
有人能证实吗?
Windows WebDAV支持可能不稳定。很有可能是由于mercurial的高级文件系统操作,操作系统做了一些不正确的事情,或者是apache的mod_dav无法处理的事情。
也有可能是一些更简单的事情出错了,比如apache阻塞了对以.
开头的路径的访问。
您可能能够在apache日志中找到一些东西,但我建议不要这样做,而是使用真正的mercurial服务器
Mercurial的http-repositories NEVER speak on WebDAV
您必须使用任何支持mercurly的web前端与repo通信,或者将WebDAV-drive挂载为本地驱动器,并将其作为本地FS上的存储库访问