Найти коммиттера силового нажатия на github

В нашем проекте (который размещен на GitHub), кто-то случайно заставляет мастер-толкать каждый раз в то время. Никто не знает, если это делается, и я хотел бы узнать, кто это делает, и какой неправильный инструмент или плохая привычка стоит за ним.

Итак, вопрос в том, как определить пользователя, который заставил силу толкнуть? Когда я тяну, я вижу что-то вроде этого:

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

но 138b9ed - это только последняя фиксация в источнике/хозяине, и любой мог бы совершить после толчка силы; возможно даже, что сам силовой толкатель ничего не совершал, просто переупал, поэтому его имя даже не присутствует в переписанной части истории происхождения/мастера как автора.

Я также пробовал git reflog origin/master, но он просто дает ту же информацию: есть запись с сообщением git pull --prune (forced update) с идентификатором фиксации 138b9ed, но это снова даст последнему коммиттеру в мастер, а не тот, кто сделал сила толчок. Запуск git reflog master на исходном сервере, вероятно, поможет, но GitHub не дает вам такого доступа AFAIK.

Есть ли какой-либо надежный способ узнать, от кого произошел переход (и когда)?

Ответ 1

Вы можете добавить webhook в свой репозиторий Github и отправить ему push-уведомления на какой-либо сервер или службу, например requestb.in.

Полезная нагрузка уведомлений имеет ключ pusher, который идентифицирует учетную запись пользователя Github, используемую для продвижения обновлений (ов). Таким образом, вы сможете определить "плохого парня".

Изменить: в полезной нагрузке также имеется логическая клавиша forced, в которой указано, была ли нажата кнопка --force или нет. Он не показан в примере Github полезной нагрузки [по состоянию на 2013-07-06] но отображается в этом другом примере.

Изменить: это возможно только потому, что Github - это интегрированное решение, которое идентифицирует толкатель и предоставляет эту информацию в полезной нагрузке webhook. Используя чистый сервер Git (например, используя только SSH для авторизации) или другое сервисное решение Git (Gitolite, Gitlab и т.д.), Это может быть невозможно. Git сам не имеет способа идентифицировать пользователя, который толкает (Git сохраняет только информацию пользователя в объектах фиксации и тега), поэтому эта информация должна быть предоставлена ​​частью идентификации и авторизации соединения (это может быть SSH или HTTPS или подобных, он также может быть полностью отсутствует, например, при локальном переадресации на репо в той же файловой системе).

Ответ 2

Как только что упомянул GitHub в твиттере

Пусть сила (толчок) будет с вами.

Шутки в сторону.
Давай, принудительно толкни эту ветку

https://pbs.twimg.com/media/DsJIVxtU4AAreMW.jpg:large

В сообщении блога " Force push timeline event " упоминается:

Когда вы принудительно нажимаете на ветку, GitHub теперь отображает событие принудительного толчка на временной шкале "Разговор" вашего запроса на извлечение.

Нажатие на ссылку "принудительное нажатие" покажет сравнение двух точек между двумя коммитами.