Запретить удаленное нажатие на главную ветку в git - PullRequest
19 голосов
/ 12 января 2010

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

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

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

receive.denyCurrentBranch = true

1 Ответ

13 голосов
/ 12 января 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...