![Mercurial 服务器升级困境](https://linux22.com/image/538323/Mercurial%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8D%87%E7%BA%A7%E5%9B%B0%E5%A2%83.png)
我有一个用于存放 Mercurial 存储库的中央服务器。我刚刚使用 在服务器上创建了一个新的存储库hg init myrepo
。服务器上的 Mercurial 版本是 1.7.3。
从我的客户端,我使用hg clone http://myserver/myrepo
。我的工作站上的 Mercurial 版本是 1.7.5。在我的客户端上,我收到一个错误:
HTTP Error 500: requirement 'dotencode' not supported
从我对该错误消息的简单谷歌搜索来看,我的服务器和客户端都足够新,可以支持“dotencode”要求。
这仅仅是一个用来转移注意力的错误信息吗?
其他信息:服务器是Windows 2008R2 64位,客户端是Windows 7。
答案1
摘录自HG 维基:
如果旧版本的 Mercurial 尝试访问由新版本的 Mercurial 创建的存储库,则会显示类似以下错误消息:
中止:不支持要求‘dotencode’!
可能会显示,这意味着用于访问该存储库的 Mercurial 版本不知道如何解释它,因为访问它需要有关“dotencode”功能的知识。
如果出现这样的错误消息,则必须使用较新版本的 Mercurial 来访问存储库,或者必须将存储库转换为该版本可以理解的旧格式(使用“hg clone --pull”)
这听起来并不相关,因为您的客户端版本似乎高于服务器版本(我认为您应该仔细检查这一点),但无论如何这个方法还是值得尝试的。
答案2
在 Mercurial 中我们确实没有任何“误导性错误消息”... :-)
错误很明显,这意味着服务器上使用的 Mercurial 版本太旧,无法读取磁盘上的存储库。requires
已经找到该文件的 wiki 页面。
既然您说服务器使用的是 1.7.2 版本,那么我认为服务器上一定还并行安装了另一个版本。(客户端上的版本在这里无关紧要,当它们通过网络交互时,您可以混合使用任何两个版本。)
我看到您已经迁移到 Bitbucket,但如果还没有,那么我的建议是在服务器上搜索 Mercurial 的第二个安装。搜索commands.py
应该会找到 Web 服务器使用的那个,搜索library.zip
应该会找到 TortoiseHg 使用的较新的那个(假设您使用它来安装它)。
答案3
我在 CentOS 6 上遇到了同样的问题
现在您可以通过在服务器上更新 mercurial 来解决此问题。
您可以从此处从大多数操作系统版本下载最新版本的 mercurialhttps://www.mercurial-scm.org/downloads
对于 CentOS 6,只需复制相应的链接并通过命令进行安装
sudo rpm -Uhv https://www.mercurial-scm.org/release/centos5/RPMS/x86_64/mercurial-4.9-1+2.7.14.x86_64.rpm