Найти совершителя силового толчка на github
В нашем проекте (размещенном на GitHub) кто-то случайно время от времени толкает мастера. Никто не знает, поступает ли так, и я хотел бы выяснить, кто это делает и что за неверно настроенный инструмент или вредная привычка стоит за ним.
Таким образом, вопрос в том, как определить пользователя, который сделал толчок силой? Когда я тяну, я вижу что-то вроде этого:
# git pull --prune
(.....)
+ 4c0d44c...138b9ed master -> origin/master (forced update)
но 138b9ed
это просто последний коммит в origin/master, и любой, возможно, совершил коммит после принудительного толчка; даже возможно, что сам силовой толкатель ничего не совершал, а просто перебазировал, поэтому его имя даже не присутствует в переписанной части истории происхождения / мастера как автора.
Я тоже пробовал git reflog origin/master
, но он просто дает ту же информацию: есть запись, говорящая git pull --prune (forced update)
с идентификатором коммита 138b9ed
, но это снова даст последнему коммиттеру в мастера, а не тому, кто толкнул силу. Бег git reflog master
на исходном сервере, вероятно, поможет, но GitHub не предоставляет такой доступ AFAIK.
Есть ли надежный способ узнать, от кого произошел толчок (и когда)?
2 ответа
Вы можете добавить веб-крючок в свой репозиторий Github и сделать так, чтобы он отправлял push-уведомления на какой-либо сервер или службу, например http://requestb.in/.
Полезная нагрузка уведомления имеет pusher
ключ, который идентифицирует учетную запись пользователя Github, используемую для отправки обновлений. Таким образом, вы сможете определить "плохого парня".
Изменить: полезная нагрузка также имеет логическое значение forced
ключ, который говорит вам, если чет был --force
толкнул или нет. Он не показан в примере полезной нагрузки Github [по состоянию на 2013-07-06], но виден в этом другом примере.
Изменить: это возможно только потому, что Github является интегрированным решением, которое идентифицирует толкатель и предоставляет эту информацию в полезную нагрузку webhook. Используя чистый сервер Git (например, используя только SSH для авторизации) или другое решение для обслуживания Git (Gitolite, Gitlab и т. Д.), Это может оказаться невозможным. Сам Git не может идентифицировать пользователя, который отправляет сообщения (Git сохраняет информацию пользователя только в объектах коммитов и тегов), поэтому эта информация должна предоставляться частью идентификации и авторизации соединения (это может быть SSH или HTTPS или тому подобное).; он также может полностью отсутствовать, например, при локальном нажатии на репо в той же файловой системе).
Как только что упомянул GitHub в твиттере
Пусть сила (толчок) будет с вами.
Шутки в сторону.
Давай, принудительно толкни эту ветку
В сообщении блога " Force push timeline event " упоминается:
Когда вы принудительно нажимаете на ветку, GitHub теперь отображает событие принудительного толчка на временной шкале "Разговор" вашего запроса на извлечение.
Нажатие на ссылку "принудительное нажатие" покажет сравнение двух точек между двумя коммитами.