我正在尝试将Mercurial配置为与Windows服务器(freeSSHd)和客户端(包括命令行和TortoiseHG)一起使用。我正在使用所有内容的最新版本......所有这些都是在过去几天内下载的。使用公钥验证,我已经能够连接到服务器,我能够使用plink执行“hg版本”并获得响应,但是当我尝试从ssh服务器克隆存储库时,命令似乎挂。使用-v运行产生:
hg -v clone ssh://<username>@<server>//hg/repositoryA testRepositoryA
running "plink.exe -i "<path to private key file>" <username>@<server> "hg -R /hg/repositoryA serve --stdio""
没有更多的即将到来。直接在服务器上运行hg serve命令会产生一个明显响应的Mercurial服务器,但客户端似乎没有进一步的请求。
在存储库目录中运行“hg serve”并通过http克隆工作完美。
我应该寻求什么来帮助调试?是否有客户端(hg和TortoiseHG)没有发送以继续请求流?
其他信息: 如果我更改为目标计算机上的无效存储库,则会显示相应的错误,因此看起来远程hg正在运行并正确评估路径。
使用--debug和--traceback运行会导致:
sending hello command
sending between command
它挂起来,直到我CTRL-C
Traceback (most recent call last):
File "mercurial\dispatch.pyo", line 46, in _runcatch
File "mercurial\dispatch.pyo", line 452, in _dispatch
File "mercurial\dispatch.pyo", line 320, in runcommand
File "mercurial\dispatch.pyo", line 504, in _runcommand
File "mercurial\dispatch.pyo", line 457, in checkargs
File "mercurial\dispatch.pyo", line 451, in <lambda>
File "mercurial\util.pyo", line 402, in check
File "mercurial\commands.pyo", line 636, in clone
File "mercurial\hg.pyo", line 187, in clone
File "mercurial\hg.pyo", line 63, in repository
File "mercurial\sshrepo.pyo", line 51, in __init__
File "mercurial\sshrepo.pyo", line 73, in validate_repo
KeyboardInterrupt
interrupted!
回应Ryan:服务器上似乎没有任何CPU使用或增加内存使用量。它似乎在等待客户端发送请求或类似的东西。
2009年11月19日:更多信息: 问题肯定在等式的freeSSHd /服务器端。使用相同的键集通过ssh连接到bitbucket工作正常。仍在努力。
答案 0 :(得分:3)
对我有用的解决方案是禁用SSH选项卡内的“使用新控制台引擎”选项。另一件事是路径。 SSH:// ssh_user @ SSH_Server_Address:SSH_Port / Win_Drive_Letter:/ Path_To_HG_Repository
一个具体的例子:
SSH://programmer@192.168.1.150:5522 / d:/存储库/ MyProyect /中继线
我目前使用MercurialHG而非CLI。我希望这有帮助
JQ
解决方案实际上我是从here
获得的答案 1 :(得分:2)
我刚才有同样的症状,虽然在Ctrl + C后hg有点帮助 - 显然plink正在等我说y / n“将服务器保存到缓存”。不幸的是,hg无法以交互方式将我的y / n传递给它(也没有告诉我plink打印的东西很重要......)
解决方案:
-batch
添加到plink命令行,以便下次发生这种情况时会中止。我还将我的密钥添加到选美,所以我不需要在其他地方输入密码。
.hgrc文件的完整示例(Win + R,notepad %USERPROFILE%\.hgrc
):
[ui]
ssh=C:\Path\To\plink.exe -C -batch -ssh -i C:\Path\To\My\putty-private-ssh-key.ppk
答案 2 :(得分:1)
另一种选择是尝试使用hg和ssh的Cygwin版本。您可以使用-e选项记录该版本中的SSH问题;例如,hg clone -e'ssh -vvv'ssh:// you @ server / repo ...
答案 3 :(得分:1)
我遇到了同样的问题。不确定它与你的关系如何,但这对我有用。 首先,我将解释我的设置。 我在我的实时网站mysite.com上有一个存储库 我在本地计算机上的mysite.com文件夹中有一个本地存储库 我有其他存储库,因此我将[ui]设置添加到本地计算机上每个存储库文件夹中的/.hg/.hgrc文件而不是Mercurial.ini文件。
首先,如果您已经通过Putty连接,请保存会话,因为Plink可以使用存储的会话。使用Pageant并添加密钥。 尝试从命令行运行plink以使用存储的会话进行连接。例如,我在Putty中将我的会话保存为“mysite”。
C:\>plink mysite
Using username "mysite".
Last login: Fri Feb 26 21:16:05 2010 from ca-xxx-xx-x-xxx.sta.host.net
←]0;mysite@server:~[mysite@server ~]$
如果可行,请在.hgrc文件中尝试以下内容
[path]
default = ssh://mysite@myhost
[ui]
username = RB <admin@mysite.com>
ssh=plink.exe -ssh -i mysite
Plink在我的PATH中设置,由于mysite会话已存储在Putty中,因此它知道要查找的内容。
我试图拉动,所以我正在测试:
hg pull --debug --traceback
希望有所帮助。
编辑:对不起,你来不及使用tortoiseHG而不是putty。希望它无论如何都有帮助。
答案 4 :(得分:1)
在我的情况下,我能够连接到我的服务器一次,但第二次失败。
我有相同的设置,它完美地工作......但只有一次。我存储的会话中没有任何内容。
[ui]
ssh=C:\Path\To\plink.exe -C -batch -ssh -i C:\Path\To\My\putty-private-ssh-key.ppk
答案 5 :(得分:0)
也许是'hg'不在路径中的情况。您可以从命令行中看到正在调用'hg'作为'hg'运行,这意味着它必须位于服务器的路径中。尝试使用--remotecmd
选项进行克隆,以提供服务器上的hg可执行文件的完整路径(祝你好好引用Windows引用)。
你的plink hg version
测试可能会起作用,因为它是作为交互式shell启动的,它会获得不同的路径 - 至少经常阻碍unix上的人。