2010-04-04 7 views
13

Ich versuche, meinen persönlichen Fork auf GitHub mit dem git + ssh-Protokoll mit TortoiseHg zu klonen. Es gibt mir einen seltsamen Fehler. Hier ist der BefehlKlonen eines Read-Write-GitHub-Repositorys mit TortoiseHg

hg clone git+ssh://[email protected]:myusername/thefork.git 

Dies ist, nachdem ich die hg-git-Modul installiert haben und es funktioniert gut, die git zu klonen: // verwenden Syntax. Aber ich glaube, es hat Probleme mit dem SSH. Der Fehler, den ich bekomme, ist dies.

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

Ich habe versucht, wie diese

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

Aber ich immer noch die gleichen Fehler manuell den Befehl ssh in die Mercurial.ini-Datei hinzufügen. Irgendwelche Ideen?

aktualisieren 1

Wenn ich den gleichen Befehl aus dem Git Bash Shell starten es ganz gut funktioniert. Ich verstehe das.

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 

Ich nehme an, es ist, weil es ssh.exe finden kann und mein Schlüssel bereits importiert ist. Ich kann den Pfad von ssh.exe zu den Windows-Eingabeaufforderungen Pfad hinzufügen und dann anstelle des vorherigen Fehlers bekomme ich dies.

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

Es scheint, dass es speziell für ssh.exe sucht obwohl ich den alternativen ssh Pfad in Mercurial.ini angegeben haben. Aber meine Vermutung ist, dass diese Konfiguration nur für einen ssh-fähigen Mercurial-Server gilt und nicht für das hg-git-Plugin gilt.

+0

Hinweis zur Selbsthilfe - Geduld. Sobald ich gelernt habe, die 5 Minuten zu warten, bis es ein sehr großes Repo klonen kann, hat hg-git gut funktioniert. –

Antwort

8

Ich habe einen Weg gefunden, aber es ist ziemlich hackish. Ich habe festgestellt, dass ProcessMonitor es in verschiedenen Pfaden nach ssh.exe in verschiedenen Pfaden suchte, also kopierte ich TortoisePlink.exe in den TortoiseHg-Ordner und nannte es ssh.exe.

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

Mit nur dieser Änderung wird es weiterhin die Authentifizierung fehlschlagen. Sie erhalten eine Pop-up-Box und das.

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

So benötigen Sie einen halten pageant.exe that comes with the main PuTTy install zu bekommen. Starten Sie das und fügen Sie Ihren Schlüssel hinzu. Dann führe den clone Befehl erneut aus und es sollte sich gut authentifizieren.

+0

Der Kopierschritt ist auf meiner Box nicht notwendig. Installieren Sie einfach putty-0.60-installer.exe über den Link @Nathan und starten Sie pageant.exe im Startmenü. Danach können Sie Ihren GitHub-Schlüssel hinzufügen. –

0

Ich verwende "plink.exe" und "pageant.exe" anstelle von "TortoisePlink.exe". "pageant.exe" liefert die Passphrase automatisch, wenn "plink.exe" sie benötigt.

+0

Welche Konfiguration verwenden Sie in der mercurial.ini? Ich habe plink.exe aus der regulären PuTTY-Distribution ausprobiert, bekomme aber den gleichen Fehler. –

0

Ich löste dieses Problem, indem ich TortoisePlink.exe zu ssh.exe kopiere. Dann habe ich ssh.exe in meinem Pfad platziert. Solange der Festzug läuft, funktioniert das für mich.

Da ich ssh.exe in meinem Pfad benötigt, frage ich mich, ob hggit überhaupt die ssh = Zeile liest.

Diese noch hackish ist, aber etwas weniger hackish als @ Nathans Technik (ich bin kein Fan mit Dateien in \ Program Files von Messing)

0

Ich fand ich Festzug starten musste und meine SSH-Schlüssel laden und dann anfänglich Klon mit der Befehlszeile z:

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

Aber ich von nun an TortoiseHg gegen GitHub (Push und Pull) ganz gut (obwohl Festzug laufen werden muss für die Authentifizierung zu arbeiten) verwenden könnte.

2

Nachdem ich stundenlang versucht habe, das Problem zu lösen, habe ich eine Anleitung gefunden, die es perfekt erklärt.

Dies ist die URL: http://www.codeproject.com/Articles/376058/Step-by-step-Setup-TortoiseHg-for-gitHub

Eine Sache, nicht im Handbuch erwähnt ist, dass die 32-Bit-Version von Festzug mit TortoiseHG gebündelt kann den „git @“ Teil in einer URL nicht erkennen, und hält für die Nachfrage es. Das Herunterladen der 64-Bit-Version von Pageant behebt diesen Fehler.

herunterladen 64-Bit-Festzug: https://splunk.net/w/PuTTy64bit

ich ein Ticket für einschließlich 64-Bit-Festzug mit TortoiseHG geöffnet haben: https://bitbucket.org/tortoisehg/thg/issue/2145/bundle-64-bit-pageant-with-64-bit

+0

Dies scheint mit THG v2.5.1 in Ordnung zu sein. Mein Pageant ist .x64 und ich habe es nicht berührt. –