Как определить force/delete push в server-side hook'e?
Доброго времени суток!
Коллеги, помогите пожалуйста разобраться, как на сервере (в "сервеном" хуке Git'а) отловить "деструктивный" push? Под деструктивными я понимаю - различные, force, delete и им подобные push'и.
P.S. Нашел решение как это сделать на клиентской стороне, но такой вариант никоим образом не подходит, контроллировать всех клиентов нет возможности.
Мне кажется, выделение прав на push в ветку подразумевает, что такой пользователь понимает и несет ответственность. В крайнем случае, при ошибке всегда можно откатиться, это же git.
Поэтому это лишнее, возможно, поможет, если более подробно опишите преследуемую цель.
*С "delete" уже разобрался, остался вопрос только по "--force"
Vitsliputsli, цель - максимально разграничить кто может "портить" мастер- (или какую-либо другую, dev- например) ветку. На мой взгляд, коммит и/или сляние веток - это одно, а полная перезапись ветки - это несколько другое и подобное нужно позволять как можно меньшему кол-ву людей. К тому же, я не уверен, что можно откатить ветку после её полной (force) перезаписи (я конечно не эксперт по Git'у и могу ошибаться).
Будет зависить еще от сервера. Напр gitlab позводяет назначать protected ветки в которые запрещено форспушить, либо вовсе запрещено пушать кому-то кроме владельца репы.
Евгений Вольф, как верно написали, если используете GitLab, то настройте ветки master и develop как protected это защитит от push, и разграничьте права, чтобы с ролью developer вообще нельзя было работать с master. Имхо, этого достаточно.
"не уверен, что можно откатить ветку" - можно, commit в git удаляются, только после чистки, так что потерять что-либо не получится и можно будет вернуть ветку на старый коммит, пусть он даже не будет отображаться в общем дереве.
Дмитрий Шицков, на сервере, "центральном" (условно назовём его так), в который и будут производиться push'и - эту папку не сможет отредактировать никто.
Большое спасибо за ссылку! Оно или нет, пока точно сказать точно не могу, довольно длинный скрипт... В данный момент разбираюсь в его тонкостях, как только разберусь с этим вопросом, отпишусь дополнительно. Ещё раз спасибо!