Подтвердить что ты не робот

Mercurial через ssh клиент и сервер в Windows

Я пытаюсь настроить Mercurial для использования как с сервером Windows (freeSSHd), так и с клиентом (как с командной строкой, так и с TortoiseHG). Я использую самые последние версии всего... все загруженные за последние несколько дней. Используя открытый ключ auth, я смог подключиться к серверу, и я могу использовать 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: Кажется, что нет никакого использования ЦП или увеличения использования памяти на сервере. Кажется, он ждет, пока клиент отправит запрос или что-то подобное.

11/19/2009: Дополнительная информация: Проблема, безусловно, находится на стороне freeSSHd/server уравнения. Соединение с битбакетом поверх ssh с одним и тем же набором клавиш отлично работает. Все еще работаю над этим.

4b9b3361

Ответ 1

Решение, которое сработало для меня, отключает параметр "Использовать новый консольный движок", который находится на вкладке SSH. Другое дело, путь. SSH://ssh_user @SSH_Server_Address: SSH_Port/Win_Drive_Letter:/Path_To_HG_Repository

Конкретный пример:

SSH://[email protected]: 5522/D:/Repository/MyProyect/багажник

В настоящее время я использую MercurialHG, а не CLI. Я надеюсь, что эта помощь

JQ

Решение на самом деле я получил его от здесь

Ответ 2

У меня появились те же симптомы, хотя hg был немного полезнее после Ctrl + C. По-видимому, plink ждал, когда я скажу y/n, чтобы "сохранить сервер в кеш". К сожалению, hg не смог передать мне y/n в интерактивном режиме (и не сказал мне, что plink напечатал что-то важное...)

Решение:

  • 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

Ответ 3

Другой вариант - попробовать Cygwin версии hg и ssh. Вы можете регистрировать проблемы SSH в этой версии с опцией -e; например, hg clone -e 'ssh -vvv' ssh://you @server/repo...

Ответ 4

Я столкнулся с этой проблемой. Не уверен, как это относится к вашему, но это то, что сработало для меня. Во-первых, я объясню свою настройку. У меня есть репозиторий на моем живом сайте mysite.com У меня есть локальный репозиторий на моем локальном компьютере в папке mysite.com У меня есть другие репозитории, поэтому я добавляю [ui] настройки в файл /.hg/.hgrc в каждой папке репозитория на моей локальной машине, а не в файле Mercurial.ini.

Во-первых, если вы уже подключились через Putty, сохраните сеанс, потому что Plink может использовать сохраненные сеансы. Используйте Pageant и добавьте свой ключ. Попробуйте запустить plink из командной строки для подключения с использованием сохраненного сеанса. Например, я сохранил сеанс как "mysite" в Putty.

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 установлен в моей PATH, и поскольку сеанс mysite уже был сохранен в Putty, он знает, что искать.

Я пытался сделать попытку, поэтому я тестировал, используя:

hg pull --debug --traceback

Надеюсь, что это поможет.

Редактирование: Извините, слишком поздно заметили, что вы использовали tortoiseHG вместо шпатлевки. Надеюсь, он все равно поможет.

Ответ 5

В моем случае я смог подключиться к моему серверу один раз, но во второй раз это не удалось.

У меня такая же настройка, и она отлично работала... но только один раз. В моих сохраненных сеансах ничего нет.

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

Ответ 6

Возможно, это случай, когда "hg" не находится на пути. Из командной строки вы можете видеть, что "hg" запускается как "hg" , что означает, что он должен находиться на пути к серверу. Попробуйте использовать параметр --remotecmd для клонирования, чтобы предоставить полный путь к исполняемому файлу hg на сервере (удача в правильном использовании окна).

Возможно, что ваш тест plink hg version работает, потому что он запускается как интерактивная оболочка, которая получает другой путь - по крайней мере, это часто затихает людей в unix.