簡體   English   中英

在Windows上的ssh客戶端和服務器上的Mercurial

[英]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打印的東西很重要......)

解:

  1. plink到主機一次,並將服務器信息保存到緩存
  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

另一個選擇是嘗試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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM