Клонирование репозитория github для чтения и записи с помощью TortoiseHg

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

hg clone git+ssh://[email protected]: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 protected]
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. Но я предполагаю, что эта конфигурация предназначена только для ртутного сервера с поддержкой ssh ​​и не применяется к плагину hg-git.


person Nathan Palmer    schedule 04.04.2010    source источник
comment
Примечание для себя - проявите терпение. Как только я научился ждать 5 минут или около того, чтобы клонировать очень большой репо, hg-git заработал нормально.   -  person CAD bloke    schedule 07.03.2011


Ответы (5)


Я нашел способ обойти это, но он довольно хакерский. Я заметил, что 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, и она должна пройти проверку подлинности.

person Nathan Palmer    schedule 04.04.2010
comment
На моем ящике шаг копирования не требуется. Просто установите putty-0.60-installer.exe по предоставленной ссылке @Nathan, а затем запустите pageant.exe из меню «Пуск». После этого вы можете добавить к нему свой ключ GitHub. - person Lex Li; 23.04.2011

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

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

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

Загрузите 64-битный Pageant: https://splunk.net/w/PuTTy64bit

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

person hyperknot    schedule 13.09.2012
comment
Кажется, это нормально с THG v2.5.1. Размер моего конкурса .x64, и я его не трогал. - person CAD bloke; 03.12.2012

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

hg clone git+ssh://[email protected]/<username>/<repo>.git

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

person Duncan Smart    schedule 29.06.2011

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

person kuy    schedule 04.04.2010
comment
Какую конфигурацию вы используете в mercurial.ini? Я пробовал plink.exe из обычного дистрибутива PuTTY, но получаю ту же ошибку. - person Nathan Palmer; 04.04.2010

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

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

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

person Emil Lerch    schedule 10.02.2011