/ / Finde den Committer eines Force Push auf Github - Git, Github, Git-Push

Finde einen Committer für einen Force Push auf Github - Git, Github, Git-Push

In unserem Projekt (das auf GitHub gehostet wird),irgendwann zwingt jemand aus Versehen den Meister zwangsweise. Niemand weiß, ob dies der Fall ist, und ich würde gerne herausfinden, wer es tut und was für ein falsch konfiguriertes Werkzeug oder welche schlechte Angewohnheit dahintersteckt.

Die Frage ist also, wie der Benutzer identifiziert werden kann, der den Force-Push ausgeführt hat. Wenn ich ziehe, sehe ich so etwas:

# git pull --prune
(.....)
+ 4c0d44c...138b9ed master     -> origin/master  (forced update)

aber 138b9ed ist nur das letzte Commit in origin / master undjemand könnte nach dem Zwangsschub begangen haben; Es ist sogar möglich, dass der Gewaltschieber selbst nichts begangen hat, nur umbasiert, so dass sein Name nicht einmal in dem neu geschriebenen Teil der Herkunfts- / Meistergeschichte als Autor vorhanden ist.

Ich habe es auch versucht git reflog origin/master, aber es gibt nur die gleichen Informationen: Es gibt einen Rekordsatz git pull --prune (forced update) mit der Commit-ID 138b9ed, aber das wird wieder den letzten Committer in Master geben, nicht der, der den Force Push ausgeführt hat. Laufen git reflog master auf dem Ursprungsserver würde wahrscheinlich helfen, aber GitHub gewährt Ihnen diesen Zugriff nicht auf AFAIK.

Gibt es einen zuverlässigen Weg, um herauszufinden, von wem der Push stammt (und wann)?

Antworten:

11 für die Antwort № 1

Sie können ein hinzufügen Webhaken zu Ihrem Github-Repository und lassen Sie die Push-Benachrichtigungen an einen Server oder einen ähnlichen Dienst senden requestb.in.

Die Benachrichtigungsnutzlast hat eine pusher Taste, die das Github-Benutzerkonto angibt, mit dem die Updates gepusht werden Auf diese Weise sollten Sie den "Bösewicht" identifizieren können.

Edit: Die Payload hat auch einen Boolean forced Schlüssel, der Ihnen sagt, ob das auch war --force geschoben oder nicht. Es ist nicht gezeigt in Githubs Beispielnutzlast [Stand vom 06.07.2013]aber sichtbar in dieses andere Beispiel.

Bearbeiten: Dies ist nur möglich, weil Github eine integrierte Lösung ist, die den Schieber identifiziert und diese Informationen in der Webhook-Nutzlast bereitstellt. Bei Verwendung eines reinen Git-Servers (z. B. nur SSH zur Autorisierung) oder einer anderen Git-Serving-Lösung (Gitolite, Gitlab usw.) ist dies möglicherweise nicht möglich. Git selbst hat keine Möglichkeit, den Push-Benutzer zu identifizieren (Git speichert nur Benutzerinformationen in Commit- und Tag-Objekten). Daher muss diese Information vom Identifizierungs- und Autorisierungsteil der Verbindung bereitgestellt werden (dies kann SSH oder HTTPS oder dergleichen sein) ; es kann auch vollständig fehlen, z. B. wenn lokal auf ein Repo im selben Dateisystem gepusht wird).