Autore, Committer e Pusher possono essere persone diverse in Git, ma git non ha memorizzato le informazioni del pusher nei log.Come ottenere le informazioni del pusher nei ganci post-ricezione?
Quindi, come ottengo?
Autore, Committer e Pusher possono essere persone diverse in Git, ma git non ha memorizzato le informazioni del pusher nei log.Come ottenere le informazioni del pusher nei ganci post-ricezione?
Quindi, come ottengo?
Non è così.
Il numero upstream repo non si basa su chi fornisce il commit: può essere tramite e-mail, una patch diff copiata su una chiave USB e altri various transfer protocol.
Alcuni di questi protocolli (ssh, https) forza hanno in loro registri le informazioni che cercate, ma:
gitolite-admin
può essere qualsiasi cosa si desideri e non correlato a un nome reale.Come Linus menziona (in "Why do some open source projects do not accept pull requests, but emailing patch files only?"):
poiché le identità GitHub sono casuali, mi aspetto che la richiesta di pull di essere a signed tag, in modo che possa verificare l'identità della persona in domanda.
Quindi, se si vuole, come qualcuno spingendo alcuni commit, a garantire per l'integrità del tutto pronti contro termine, è possibile effettuare e firmare un tag sul HEAD
di ciò che viene spinta, in modo che il pronti contro termine a monte ti considero come, non esattamente il "pusher", ma quello che convalida ciò che è stato spinto
Se la spinta avviene su SSH, è possibile utilizzare la variabile di ambiente USER
. (Questo funzionerà anche per i push locali, ovviamente.) Ciò dipende, naturalmente, dal fatto che l'utente che viene utilizzato per l'accesso SSH sia distinto per diversi utenti del sistema, ad esempio, non è il caso di gitolite. (Tuttavia, la gitolite definirà la variabile di ambiente GL_USER
per identificare lo spintore.) Per HTTP, è possibile provare la variabile di ambiente REMOTE_USER
.
Aggiornamento: In generale, questa informazione non è molto interessante rispetto all'autore e committer dei commit - è sempre una sorpresa per me, ad esempio, che GitHub visualizza l'utente che ha fatto particolare spinge a tutti. ..
Grazie per la tua risposta! ma, la spinta è su HTTP non SSH. quindi, non posso usare la variabile di ambiente 'USER'. – Saito
@ Saito: ho aggiunto un suggerimento per HTTP. –
GitHub potrebbe visualizzare l'utente che ha fatto la spinta perché è più visibile che guardare un elenco di commit per vedere chi ha contribuito, e per GitHub, il 99% delle volte, quello che spinge ha anche contribuito con alcuni (o tutti) spinto commette. Poiché una spinta non può essere eseguita in modo anonimo, GitHub ha le informazioni. – VonC
+1: buoni punti –