Если вы готовы отказать в удалении всех веток с помощью «push», вы можете просто установить переменную конфигурации receive.denyDeletes
в true
в своем хранилище.
Если вам нужно более сложное управление, ярекомендуем вам взглянуть на хук update-paranoid
из папки contrib/hooks
дистрибутива git.Он позволяет вам настраивать каждую ссылку, которая может делать такие вещи, как запрет быстрого перемотки вперед и запрет удалений с помощью push, а также некоторые более сложные способы поведения.
update-paranoid
должен делать все, что вам нужно, без необходимостинаписать свой собственный хук.