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

Я пытаюсь клонировать свою личную вилку на 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 FilesTortoiseHgTortoisePlink.exe" -ssh -2 -i "C:SourceSSHPrivateKey.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

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

5 ответов


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

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

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


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

Это 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-битного конкурса с TortoiseHG: https://bitbucket.org/tortoisehg/thg/issue/2145/bundle-64-bit-pageant-with-64-bit


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

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

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


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


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

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

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