[英]Mercurial over ssh client and server on Windows
我正在嘗試將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使用或增加內存使用量。 它似乎在等待客戶端發送請求或類似的東西。
11/19/2009:更多信息:問題肯定在freeSSHd / server方面。 使用相同的鍵集通過ssh連接到bitbucket工作正常。 仍在努力。
對我有用的解決方案是禁用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
實際上我從這里得到了解決方案
我剛才有同樣的症狀,雖然在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
另一個選擇是嘗試Cygwin版本的hg和ssh。 您可以使用-e選項記錄該版本中的SSH問題; 例如,hg clone -e'ssh -vvv'ssh://你@ server / repo ...
我遇到了同樣的問題。 不確定它與你的關系如何,但這對我有用。 首先,我將解釋我的設置。 我在我的實時網站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。 無論如何希望它有所幫助。
在我的情況下,我能夠連接到我的服務器一次,但第二次失敗。
我有相同的設置,它完美地工作......但只有一次。 我存儲的會話中沒有任何內容。
[ui]
ssh=C:\Path\To\plink.exe -C -batch -ssh -i C:\Path\To\My\putty-private-ssh-key.ppk
也許是'hg'不在路徑中的情況。 您可以從命令行中看到正在調用'hg'作為'hg'運行,這意味着它必須位於服務器的路徑中。 嘗試使用--remotecmd
選項進行克隆,以提供服務器上 hg可執行文件的完整路徑(祝你好運Windows引用正確)。
您的plink hg version
測試可能會起作用,因為它是作為交互式shell啟動的,它獲得了不同的路徑 - 至少經常阻礙unix上的人們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.