2009-11-11 90 views
17

我想配置Mercurial與Windows服務器(freeSSHd)和客戶端(命令行和TortoiseHG)一起使用。我正在使用最新版本的所有內容...全部在過去幾天內下載。使用公共密鑰身份驗證,我已經能夠連接到服務器,並且我可以使用plink執行「hg version」並獲得響應,但是當我嘗試從ssh服務器克隆存儲庫時,該命令顯示爲掛。使用-v產出:Mercurial在Windows上的ssh客戶端和服務器

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! 

應對瑞恩:雖然目前沒有出現任何CPU使用率或增加服務器上的內存使用量。它似乎在等待客戶發送請求或類似的東西。

11/19/2009:更多信息: 問題肯定存在於freeSSHd/server端。使用相同的鍵集通過ssh連接到bitbucket可以正常工作。仍在努力。

+1

嘗試運行與「--debug」和「--traceback」選項「汞克隆」。這可能會讓你更加了解問題的原因。 – 2009-11-11 16:52:48

+0

Hrm,客戶端或服務器端的mercurial進程中是否有任何CPU活動?接口上的任何網絡流量? (只是在黑暗中刺...) – 2009-11-12 05:16:19

+0

我有同樣的問題...確保mercurial的服務器版本是最新的。 – nlucaroni 2010-01-29 13:13:47

回答

3

我工作的解決方案是禁用SSH選項卡內的「使用新控制檯引擎」選項。另一件事是路徑。 SSH:// ssh_user @ SSH_Server_Address:SSH_Port/Win_Drive_Letter:/ Path_To_HG_Repository

一個具體的例子:

SSH://[email protected]:5522/d:/存儲庫/ MyProyect /中繼線

我目前使用MercurialHG而不是CLI。我希望這有助於

JQ

該解決方案實際上我是從here

+0

不使用「新控制檯引擎」使我可以克隆遠程存儲庫,但hg進程仍然掛在Windows服務器上,只有在手動終止時,客戶端纔會終止。 – 2012-11-20 13:29:27

+0

相同的拉/推。如果我試圖通過Ctrl-C終止客戶端,那麼什麼都不會發生,但是在殺掉了hg進程服務器端之後,客戶端輸出包含:異常KeyboardInterrupt:KeyboardInterrupt()> .sshpeer對象被忽略。通過TortoiseHG它是一樣的,TortoisePlink掛起,但如果這個過程被殺死,服務器hg進程也會死亡。 – 2012-11-20 14:41:39

+0

完全相同的問題描述在http://selenic.com/pipermail/mercurial/2008-July/020382.html – 2012-11-21 09:22:40

0

也許是'hg'不在路徑中的情況。你可以從被調用的命令行中看到'hg'正在作爲'hg'運行,這意味着它必須位於服務器的路徑中。嘗試使用--remotecmd選項來克隆服務器上的hg可執行文件的完整路徑(祝你的窗口引用正確)。

您的plink hg version測試很有可能是因爲它是作爲交互式shell啓動的,它獲得了不同的路徑 - 至少經常阻礙unix上的人。

+0

通過更改爲無效的存儲庫路徑,我可以得到一個錯誤,所以我相當肯定hg被正確調用,並在路徑中。上面我也提供了--debug和--traceback的輸出。 – 2009-11-11 22:26:55

+0

是的,聽起來沒錯。一旦有人發現它,我會刪除這個答案。 – 2009-11-12 05:15:30

2

剛纔我得到了同樣的症狀,雖然hg在Ctrl + C之後有點幫助 - 顯然plink正在等待我說y/n來「保存服務器到緩存」。不幸的是汞不能把我的Y/N它交互(也沒有告訴我,砰砰打印一些重要的東西......)

解決方案:

  1. 砰砰到主機一次,節省服務器的信息緩存
  2. -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 
+0

對於我來說,-batch沒有解決問題。我之前設法將證書放入緩存中。我需要找到更多的時間來深入研究這個問題,但是看起來hg並不是發佈客戶端的命令來開始工作。 – 2010-01-06 00:05:47

+0

最佳答案。謝謝! – mpen 2015-07-19 18:30:32

1

另一種辦法是嘗試的汞和ssh Cygwin的版本。您可以使用-e選項在該版本中記錄SSH問題;例如,hg clone -e'ssh -vvv'ssh:// you @ server/repo ...

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;[email protected]:~[[email protected] ~]$ 

如果工作,嘗試在你的.hgrc文件中的以下

[path] 
default = ssh://[email protected] 
[ui] 
username = RB <[email protected]> 
ssh=plink.exe -ssh -i mysite 

的Plink被設置在我的道路,而且由於mysite的會議已經存儲在膩子,它知道要尋找什麼對於。

我試圖做一個拉,所以用我在測試:

hg pull --debug --traceback 

希望有所幫助。

編輯:對不起,看到您使用tortoiseHG代替膩子太晚了。無論如何希望它有幫助。

1

在我的情況下,我能夠連接到我的服務器一次,但第二次失敗。

我有相同的設置,它工作完美......但只有一次。我存儲的會話中沒有任何內容。

[ui] 
ssh=C:\Path\To\plink.exe -C -batch -ssh -i C:\Path\To\My\putty-private-ssh-key.ppk