在进行hg clone时,中止没有消息

时间:2013-04-06 16:15:10

标签: mercurial tortoisehg abort

我们在服务器上使用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))以及相同的存储库工作正常。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您应该转到来源 - hg clone https://www.mercurial-scm.org/repo/hg。查看sshpeer.py第73行及其周围的上下文,看起来在尝试执行ssh调用时发生错误。

最可能的原因是:

  1. 开发人员在某个地方的hgrc中有一个混乱的ui.ssh条目。可能他们已经指定了:

    [ui]
    ssh = "ssh -C"
    

    而不是:

    [ui]
    ssh = ssh -C
    
  2. 开发人员可能指定了ui.ssh部分,但没有适当的ssh二进制文件。默认情况下,TortoiseHg将使用PuTTY(它会安装二进制文件),但如果你说要使用别的东西,Mercurial会服从。

  3. 如果检查上面没有帮助,请克隆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提出错误报告。