我们在服务器上使用mercural-server作为中央存储库,Windows开发人员使用TortoiseHg作为客户端。其中一个开发人员甚至无法使用“abort:”克隆存储库 - hg响应而没有消息。
SSH授权成功传递 - 在其他计算机上使用相同的密钥就可以了,我可以克隆存储库并对其进行更改。
如果我运行hg --traceback clone< ...>在我开发的计算机上:
Traceback (most recent call last):
File "mercurial\dispatch.pyo", line 88, in _runcatch
File "mercurial\dispatch.pyo", line 743, in _dispatch
File "mercurial\dispatch.pyo", line 514, in runcommand
File "mercurial\dispatch.pyo", line 833, in _runcommand
File "mercurial\dispatch.pyo", line 804, in checkargs
File "mercurial\dispatch.pyo", line 740, in <lambda>
File "mercurial\util.pyo", line 475, in check
File "mercurial\commands.pyo", line 1234, in clone
File "mercurial\hg.pyo", line 267, in clone
File "mercurial\hg.pyo", line 121, in peer
File "mercurial\hg.pyo", line 101, in _peerorrepo
File "mercurial\sshpeer.pyo", line 59, in __init__
File "mercurial\sshpeer.pyo", line 73, in validate_repo
File "mercurial\util.pyo", line 137, in popen3
File "subprocess.pyo", line 679, in __init__
File "subprocess.pyo", line 896, in _execute_child
WindowsError: [Error 2]
abort:
目标文件夹是可写的。我甚至不知道什么是问题的根源,因为在其他Windows计算机上使用相同版本的TortoiseHg(TortoiseHg 2.7.1(使用Mercurial 2.5.2))以及相同的存储库工作正常。
答案 0 :(得分:1)
在这种情况下,您应该转到来源 - hg clone https://www.mercurial-scm.org/repo/hg
。查看sshpeer.py第73行及其周围的上下文,看起来在尝试执行ssh调用时发生错误。
最可能的原因是:
开发人员在某个地方的hgrc中有一个混乱的ui.ssh
条目。可能他们已经指定了:
[ui]
ssh = "ssh -C"
而不是:
[ui]
ssh = ssh -C
开发人员可能指定了ui.ssh
部分,但没有适当的ssh二进制文件。默认情况下,TortoiseHg将使用PuTTY(它会安装二进制文件),但如果你说要使用别的东西,Mercurial会服从。
如果检查上面没有帮助,请克隆mercurial源,修改它以显示ssh命令(sshpeer~line 73)并以纯模式安装,然后尝试克隆。这将告诉你究竟是什么叫。
hg clone https://www.mercurial-scm.org/repo/hg
cd hg
<path\to\python>\python setup.py --pure install
cd <other directory>
<path\to\python>\Scripts\hg.bat clone <repo>
另外,请在适当的bug tracker提出错误报告。