2012-05-17 25 views
10

Ho un repository privato su Github che ospita 3 sottomoduli, tutti e 3 dei quali sono anche privati.Problemi con sottomoduli git quando sottomoduli sono pronti contro termine Github privati ​​

Ho generato 4 chiavi SSH sul mio server EC2 e applicato come Github distribuire chiavi per tutti e 4 i repository privati.

Sono in grado di clonare il repository principale in quanto riconosce la chiave SSH. Quando eseguo "aggiornamento git sottomodulo" fallisce sui pronti contro termine private con il seguente errore:

ERRORE: Repository non trovato. irreversibile: l'estremità remota si è riattaccata in modo imprevisto

Se controllo manualmente questi repository privati ​​funziona, ma non quando si utilizza il comando del sottomodello git. Qualche idea? Non è completamente supportato?

risposta

9

L'autenticazione di github è un po 'strana. Non usano nomi utente; si limitano a dedurre in base alla chiave pubblica che hai presentato quale utente sei. Dato che hai generato quattro chiavi di distribuzione, nessuno può immaginare quale sarà utilizzata dal tuo server quando si connetterà a github - github accetterà qualcuna di esse, quindi rifiuterà qualsiasi accesso ai repository che non hanno la chiave registrata.

Come tale, la soluzione più semplice è quello di utilizzare solo una singola chiave di implementazione per tutti i repository.

Se non è possibile, tuttavia, è possibile eseguire l'hacking su questo utilizzando alias host ssh. Aggiungi al ~/.ssh/config strofe del server come la seguente:

Host repo-foo 
    HostName ssh.github.com 
    Port 443 
    User git 
    IdentityFile /path/to/my-ssh-key-file-for-foo 
    IdentitiesOnly yes 

Host repo-bar 
    HostName ssh.github.com 
    Port 443 
    User git 
    IdentityFile /path/to/my-ssh-key-file-for-bar 
    IdentitiesOnly yes 

quindi puntare i vostri sottomoduli a repo-bar:username/bar.git e repo-foo:username/foo.git piuttosto che utilizzando il modulo [email protected]:....

Ciò farà sì che git e ssh considerino ogni repository come residente su un server diverso e passino in un file di identità esplicito, quindi non c'è confusione su quale chiave utilizzare.

+1

Sì, ho pensato che, tuttavia, le chiavi di distribuzione sono uniche e non posso posizionarle su più progetti. Vedrò cos'altro posso fare, ma principalmente voglio implementazioni senza password. –

+1

Questo non è strano; è abbastanza standard! E la soluzione standard è esattamente come hai suggerito. – Ashe

+0

@Len, per quanto possa essere standard, è piuttosto strano. github dovrebbe sistemare le loro cose per consentire l'utilizzo della stessa chiave di distribuzione su più repository :) – bdonlan

Problemi correlati