Клонирование репозитория github для чтения и записи с использованием TortoiseHg - PullRequest
14 голосов
/ 04 апреля 2010

Я пытаюсь клонировать мой личный форк на github, используя протокол git + ssh с TortoiseHg. Это дает мне довольно странную ошибку. Вот команда

hg clone git+ssh://git@github.com:myusername/thefork.git

Это после того, как я установил модуль hg-git, и он прекрасно работает для клонирования с использованием синтаксиса git: //. Но я считаю, что у него проблемы с SSH. Ошибка, которую я получаю, заключается в следующем.

importing Hg objects into Git
[Error 2] The system cannot find the file specified

Я попытался вручную добавить команду ssh в файл mercurial.ini, как это

[ui]
username = email@address.com
ssh="C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -i "C:\Source\SSHPrivateKey.ppk"

Но я все еще получаю ту же ошибку. Есть идеи?

Обновление 1

Если я запускаю ту же команду из оболочки Git Bash, она работает просто отлично. Я понял это.

importing Hg objects into Git
Counting objects: 1559, done.
Compressing objects: 100% (586/586), done.
Total 1559 (delta 960), reused 1534 (delta 947)
importing Git objects into Hg
at:  0/86
updating to branch default
219 files updated, 0 files merged, 0 files removed, 0 files unresolved

Я предполагаю, что это потому, что он может найти ssh.exe, и мой ключ уже импортирован. Я могу добавить путь ssh.exe к пути командной строки Windows, а затем вместо предыдущей ошибки я получаю это.

importing Hg objects into Git
Permission denied (publickey).
abort: the remote end hung up unexpectedly

Кажется, он ищет файл ssh.exe, хотя я указал альтернативный путь ssh в mercurial.ini. Но я предполагаю, что эта конфигурация предназначена только для Mercurial-сервера с поддержкой ssh ​​и не применяется к плагину hg-git.

Ответы [ 5 ]

8 голосов
/ 04 апреля 2010

Я нашел способ обойти это, но он довольно хакерский. Я заметил, что ProcessMonitor показывал, что ищет ssh.exe по нескольким различным путям, поэтому я скопировал TortoisePlink.exe в папку TortoiseHg и назвал его ssh.exe.

copy "C:\Program Files\TortoiseHg\TortoisePlink.exe" "C:\Program Files\TortoiseHg\ssh.exe"

Только с этим изменением он все равно не пройдет аутентификацию. Вы получите всплывающее окно и это.

importing Hg objects into Git
abort: the remote end hung up unexpectedly

Так что вам нужно получить pageant.exe, который поставляется с основной установкой PuTTy . Начните это и добавьте свой ключ к этому. Затем снова запустите команду clone, и она должна просто аутентифицироваться.

2 голосов
/ 13 сентября 2012

Потратив много часов на решение этой проблемы, я нашел одно руководство, которое объяснило это прекрасно.

Это URL: http://www.codeproject.com/Articles/376058/Step-by-step-Setup-TortoiseHg-for-gitHub

Одна вещь, не упомянутая в руководстве, заключается в том, что 32-разрядная версия Pageant, входящая в комплект TortoiseHG, не может распознать часть «git @» в URL-адресе и продолжает запрашивать ее. Загрузка 64-битной версии Pageant исправляет эту ошибку.

Скачать 64-битный конкурс: https://splunk.net/w/PuTTy64bit

Я открыл заявку на включение 64-битного Pageant в TortoiseHG: https://bitbucket.org/tortoisehg/thg/issue/2145/bundle-64-bit-pageant-with-64-bit

1 голос
/ 29 июня 2011

Я обнаружил, что должен был запустить Pageant и загрузить свой SSH-ключ, а затем первоначально клон с помощью командной строки например ::

hg clone git+ssh://git@github.com/<username>/<repo>.git

Но с тех пор я мог бы использовать TortoiseHg против GitHub (push и pull) очень хорошо (хотя Pageant должен быть запущен для аутентификации, чтобы работать).

0 голосов
/ 11 февраля 2011

Я решил эту проблему, скопировав TortoisePlink.exe в ssh.exe. Затем я поместил ssh.exe на моем пути. Пока работает конкурс, это работает для меня.

Учитывая, что мне нужен ssh.exe на моем пути, мне интересно, вообще ли hggit читает строку ssh =.

Это все еще хакерский, но немного менее хакерский, чем метод @ Натана (я не фанат возиться с файлами внутри \ Program Files)

0 голосов
/ 04 апреля 2010

Я использую «plink.exe» и «pageant.exe» вместо «TortoisePlink.exe». «pageant.exe» автоматически предоставляет пароль, когда «plink.exe» в этом нуждается.

...