In unserem Projekt (das auf GitHub gehostet wird) zwingt jemand aus Versehen den Master gelegentlich zwingt. Niemand ist sich dessen bewusst, und ich würde gerne herausfinden, wer es tut und welche Art von fehlerhaft konfiguriertem Werkzeug oder schlechter Gewohnheit dahinter steckt.Find Committer eines Force Push auf Github
Die Frage ist also, wie man den Benutzer identifiziert, der den Force Push gemacht hat? Als ich ziehe ich etwas sehen:
# git pull --prune
(.....)
+ 4c0d44c...138b9ed master -> origin/master (forced update)
aber 138b9ed
ist nur das jüngste in origin/master begehen, und jeder könnte, nachdem die Kraft Push begangen haben; es ist sogar möglich, dass der Kraftschieber selbst nichts getan hat, nur umgestaltet, so dass sein Name nicht einmal im umgeschriebenen Teil der Herkunft/Meistergeschichte als Autor vorhanden ist.
Ich habe auch versucht git reflog origin/master
, aber es gibt nur die gleichen Informationen: Es gibt einen Datensatz mit der ID begehen sagen git pull --prune (forced update)
ist 138b9ed
, aber das wird wieder das letzte Committer in Master geben, nicht derjenige, der die Kraft Push tat. Das Ausführen von git reflog master
auf dem Ursprungsserver würde wahrscheinlich helfen, aber GitHub gibt Ihnen nicht diese Art von Zugriff AFAIK.
Gibt es eine zuverlässige Möglichkeit herauszufinden, von wem der Push stammt (und wann)?
Also im Grunde würde ich prüfen, ob "vor" ist ein Vorfahre von 'nachher 'in der [post-receive webhook] (https://help.github.com/articles/post-receive-hooks) Payload, und wenn nicht, es war ein Kraftstoß? – Tgr
Ja (+1), ... entweder diese Antwort, oder verwenden Sie einen Polygraphen;) wie in http://stackoverflow.com/a/15030429/6309. – VonC
@Tgr, die Nutzlast hat eine "erzwungene" Taste, die Ihnen sagt, ob der Push erzwungen wurde;) –