2009-08-12 15 views
5

Sto provando a configurare un repository git condiviso tramite ssh, copiando le chiavi pubbliche degli utenti su authorized_keys. Mi piacerebbe davvero che il "nome utente" della ssh-key fosse parte della cronologia dei commit nel repository (in modo che l'utente "joe" non potesse semplicemente impostare il suo nome come "kate" - abbiamo bisogno di un qualche tipo di responsabilità) . C'è un modo per fare questo ?Posso associare il nome utente ssh con commit con git su ssh?

risposta

5

Semplicemente no, non c'è modo. Il motivo è che i dettagli dell'autore e del committer sono impostati quando viene eseguito un commit e questo di solito avviene localmente. Un git push si verifica in un secondo momento per trasferire i commit esistenti al repository remoto. Poiché i commit sono già fatti e referenziati dall'hash SHA1, non possono essere modificati durante un'operazione push.

Quello che si potrebbe pensare di fare è avere un hook di pre-ricezione o aggiornamento che impedisce alle persone di inviare commit che non sono stati creati, ma questo potrebbe impedire un sacco di usi legittimi. Potresti scoprire che fidarsi dei tuoi utenti è l'unica opzione sensata.

+0

Quindi, se un utente cambia il suo nome di committente/autore e indirizzo e-mail e spinge un codice compromesso che si camuffa da collega, non c'è nulla che possa impedire questo a livello di pronti contro termine. – pinkvoid

5

Questo non funzionerà con la natura decentralizzata di git. Imagine joe unisce ramo di sviluppo di kate. Ci sono impegna da Joe e kate nel suo clone locale ora:

* joe: Merge branch 'kate' 
|\ 
| * joe: update foo 
* | kate: fix test 
* | kate: add test 
|/ 
* joe: initial commit 

If joe spinte al repository centrale ora, e si è far rispettare l'username, commit di Kate sarebbero attribuiti a joe.

1

Su Git-hub ogni utente ha il proprio repository git lato server. Forse potresti consentire agli utenti solo di andare in là, e avresti un amministratore che entra nel repository "ufficiale"? In questo modo, c'è completa tracciabilità e responsabilità. Avrai anche un moderatore con la responsabilità finale.

+0

È un bel suggerimento, ma non vogliamo un singolo amministratore dato che tutti i committer sono considerati ugualmente affidabili. Un singolo amministratore sarebbe solo un overhead, che evitiamo come la peste ... – krosenvold