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