Подтвердить что ты не робот

Запретить удаленное нажатие ведущей ветки в git

Есть ли способ изменить конфигурацию центрального репозитория, чтобы запретить удаленное нажатие на мастер-ветку (используя git)? Он будет обновляться только через слияние веток владельцем релиза.

В детских репозиториях это возможно, но, к сожалению, он не всегда достаточно велик, легко забыть сделать это на новой машине - никоим образом не защищать от случайных нажатий. Разработчики должны иметь возможность вытащить из любой ветки и вернуться к любой ветке, кроме master, которую мы хотим видеть только для чтения. Возможно ли это с помощью git? Или мы пытаемся создать неправильный рабочий процесс.

Обновить tl; dr: спасибо Чарльзу Бейли, ответ проверяет мастер и добавляет следующую конфигурацию:

receive.denyCurrentBranch = true
4b9b3361

Ответ 1

Вы должны взглянуть на образец update hook, называемый update-paranoid в каталоге contrib дистрибутива git. Это позволяет вам настраивать ACL для каждой ветки, ограничивая, кому разрешено нажать на какие ветки. Таким образом, вы можете ограничить обновление мастера, чтобы просто освободить владельцев.

Я не совсем уверен, что вы подразумеваете под "только обновлением слияния веток". Я предполагаю, что ваш центральный репозиторий голый, и в этом случае ветки обычно обновляются только нажатием. Нет никакой принципиальной разницы в git между нажатием фиксации, которая является слиянием, и тем, что не так. Я не уверен, что ваши критерии для ограничения типа обновления для мастера должны быть.

В случае, если вы нажимаете на не-голый центральный репозиторий и master всегда является ветвью, вы можете просто установить конфигурационную переменную receive.denyCurrentBranch на true или refuse.