Вам следует взглянуть на пример update
hook, называемый update-paranoid
в каталоге contrib
дистрибутива git. Это позволяет вам устанавливать ACL для каждой ветви, ограничивая, кому разрешено переходить в какие ветви. Таким образом, вы можете ограничить обновление мастера только владельцами релизов.
Я не совсем уверен, что вы подразумеваете под "только обновляется через слияние веток". Я предполагаю, что ваш центральный репозиторий пуст, и в этом случае ветки обычно обновляются только одним нажатием. В git нет никакой концептуальной разницы между отправкой коммита, который является слиянием, и коммитом, который не является таковым, поэтому я не уверен, для чего предназначены ваши критерии ограничения типа обновления для master.
В случае, если вы отправляете в непокрытый центральный репозиторий, а master
всегда является извлеченной ветвью, вы можете просто установить переменную конфигурации receive.denyCurrentBranch
в true
или refuse
.