2015-07-29 6 views
12

Ich habe ein Konto auf einer ssh-freundlichen Labormaschine, wo ich viele private Projekte speichern kann, damit ich von mehreren Computern darauf zugreifen kann (und ich nur meine wenigen privaten Github-Repos für Dinge verwenden kann, an denen mehrere Leute arbeiten) .Ist es möglich, Cargo Fetch-Abhängigkeiten von einem privaten Remote-Git zu haben?

Es ist wie Rust scheint, ist gut ausgestattete lokale und öffentliche Daten unter Verwendung Dinge wie

[dependencies.foo] 
git = "https://github.com/bar/foo" 

[dependencies.baz] 
path = "/path/to/baz" 

Aber ich keinen Weg, um es zu bekommen gefunden habe, holt mit ssh git zu arbeiten (zB git = "[email protected]:bar/foo" oder in meinem Fall labmachine:bar/foo). Ich habe passwordless/keygen ssh eingerichtet, wenn das hilft.

Es ist keine große Sache, wenn es nicht existiert. Im Moment klicke ich nur manuell das Repository und verwende , was so lange funktioniert, wie ich meine Verzeichnisstruktur gleich behalte und mich daran erinnere, alle Abhängigkeiten auf allen meinen Maschinen manuell pull. Aber es würde die Dinge viel einfacher machen, wenn ich Cargo einfach dafür einrichten könnte, besonders wenn ich nur schnell etwas auf meinem Laptop oder was auch immer vorführen müsste. ein vollständiger SSH Pfad anstatt Git Stenografie

+0

Ich würde nicht glauben, dass Cargo mit einer Art Werkzeug zur Authentifizierung von Git kommt, da die Idee von Cargo darin besteht, öffentliche Abhängigkeiten für ein One-for-all-Build-Tool zu finden. –

+0

Ich würde völlig erwarten, dass, wenn 'git clone foo' funktioniert, dann' git = "foo" 'funktioniert. Es sollte die gleichen Schlüssel verwenden, soweit mir bekannt ist. Was passiert eigentlich? –

+0

@ChrisMorgan Wenn Sie versuchen, SSH-Syntax zu verwenden (zB git @ github nur zum Beispiel) erhalten Sie "ungültige URL' [email protected]: meine/Kiste ': relative URL ohne eine Basis" – LinearZoetrope

Antwort

2

Verwendung:

git = "ssh://landmachine/bar/foo" 
+1

Hmm, funktioniert nicht. Wenn ich meinen in ~/.ssh/config definierten Alias ​​verwende, bekomme ich "keinen solchen bekannten Host". Die Eingabe der vollständigen URL führt zu einer Fehlerauthentifizierung: Verbindungsagent fehlgeschlagen. Ich habe überprüft, dass der vollständige SSH-Pfad mit 'git clone' funktioniert, um klar zu sein. – LinearZoetrope

+0

Das ist lästig. Ich bin mir nicht sicher, was dann los ist. –

2

Auf macOS Sierra hatte ich eine .ssh/config Datei wie folgt zu erstellen:

Host * 
    UseKeychain yes 
    AddKeysToAgent yes 
    IdentityFile ~/.ssh/id_rsa 

mit dem privaten Schlüssel (RSA) Datei zeigte auf, und dann den Befehl ausgeben:

ssh-add -K ~/.ssh/id_rsa 

was (endlich!) erlaubt ein en versuchen wie:

git = "ssh://[email protected]/skipjaq/loda.git" 

perfekt funktionieren.

Ich weiß nicht, wie oft ich den Befehl ssh-add wiederholen muss, aber es scheint, dass dies zumindest bis zum nächsten Neustart halten sollte.

Diese Anomalie ist offenbar eine Eigenschaft von ssh-agent auf macOS Sierra.

+0

Ich kann bestätigen, dass ich den 'ssh-add' Befehl erneut ausgeben musste, bevor es wieder funktionieren würde (nach einem Neustart, der durch ein Update verursacht wurde). –

Verwandte Themen