Nel nostro progetto (che è ospitato su GitHub), qualcuno forza accidentalmente spinge il master ogni tanto. Nessuno è consapevole se farlo, e mi piacerebbe scoprire chi lo fa e che tipo di strumento errato o cattiva abitudine è dietro di esso.Trova committer di una forza push su github
Quindi la domanda è, come identificare l'utente che ha fatto il push forzato? Quando tiro vedo qualcosa di simile:
# git pull --prune
(.....)
+ 4c0d44c...138b9ed master -> origin/master (forced update)
ma 138b9ed
è solo l'ultimo di commit di origine/master, e chiunque avrebbe potuto compiuti dopo che la forza di spinta; è anche possibile che lo spintore non abbia commesso nulla, semplicemente ribattezzato, quindi il suo nome non è nemmeno presente nella parte di origine riscritta/la storia del maestro come autore.
Ho anche provato git reflog origin/master
, ma semplicemente dà le stesse informazioni: v'è un verbale dicendo git pull --prune (forced update)
con l'id commettere 138b9ed
, ma che ancora una volta dare l'ultima committer in padrone, non quello che ha fatto la spinta forza. L'esecuzione di git reflog master
sul server di origine probabilmente sarebbe di aiuto, ma GitHub non ti dà quel tipo di accesso AFAIK.
Esiste un modo affidabile per scoprire da chi proviene la spinta (e quando)?
Quindi in pratica verificherei se 'before' è un antenato di' after' nel payload [post-ricevi webhook] (https://help.github.com/articles/post-receive-hooks), e se no, era una spinta forzata? – Tgr
Sì (+1), ... o quella risposta, o utilizzare un poligrafo;) come in http://stackoverflow.com/a/15030429/6309. – VonC
@Tgr, il payload ha una chiave 'forced' che ti dice se il push è stato forzato;) –