2012-03-20 14 views
8

Su GitHub:GIT e GitHub - Come posso sapere chi ha effettuato il commit di un deposito in un repository?

Eve scrive un codice nella sua forcella di un progetto popolare, commuta come "Eve" <[email protected]> e invia una richiesta pull a monte.

Alice non si accorge che il codice di Eve contiene una backdoor del progetto popolare su cui lavora, pensa che il codice sia ottimo e unisce la richiesta di pull.

In seguito, tutti diventano proprietari.

Bob, il capo di Alice, vorrebbe licenziare chiunque abbia sbarcato il codice. Lo fa un git log --full, e vede:

commit deadbeef 
Author: Eve <[email protected]> 
Commit: Eve <[email protected]> 

git log --fuller non aiuta, ed Eva non dispone dei diritti di Direct Push per il repository.

Bob può scavare attorno alla cronologia delle richieste di pull e trovarlo in questo modo, ma questo fa schifo. C'è un modo per capirlo a livello locale?

risposta

3

In generale con git, è possibile utilizzare git signoff (vedere What is the Sign Off feature in Git for?) e quindi aggiungere un hook di aggiornamento per rifiutare qualsiasi push che non ha un signoff. Tuttavia, GitHub non sembra consentire ganci personalizzati in generale, ma si potrebbe aggiungere un post-ricezione-hook per registrare tutti gli eventi futuri spinta:

http://help.github.com/post-receive-hooks/

Se questo è stato un evento che già accaduto, potrebbe essere difficile (o impossibile?) rintracciare. Si potrebbe essere in grado di guardare i log git reflog e ssh, ma non sono sicuro che GitHub fornisca tali informazioni. Se fosse davvero una violazione della sicurezza, potrebbe valere almeno la pena di chiedere loro quali registri hanno.

+0

Grazie per il puntatore a Git Signoff, mai visto prima, potrebbe essere bello andare avanti. –

+1

Dopo aver frugato, per quanto posso dire, questo è piuttosto impossibile. L'altro suggerimento che ho ottenuto è che dovremmo semplicemente non usare mai il pulsante di fusione automatico su github - invece, fare un checkout locale e unire dance per assegnare in modo esplicito i committer a tutto. –

Problemi correlati