2010-01-11 2 views
19

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

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

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

receive.denyCurrentBranch = true 
+1

Я привел пример сценария для аналогичной проблемы в [Как настроить ветви только для чтения в центральном «хранилище для разработки»?] (Http://stackoverflow.com/questions/14502164/how-to-configure- read-only-branch-in-a-central-development-repository) – Alberto

ответ

13

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

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

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

+0

Это должно быть сделано локально (через слияние), в отличие от удаленного 'push', который мы хотим запретить. И нет, это не годится - «мастер» проверен и является рабочей копией, так сказать. Спасибо, я посмотрю на обновление, параноидальное, возможно, ограничится одним человеком. – kibitzer

+0

Хорошо, я буду кусать. Почему ваш центральный репозиторий не горит, а какая ветка обычно является проверенной ветвью? –

+0

'master' - это отмеченная ветка; мы могли бы создать голый репозиторий, но я не вижу смысла, поскольку идея заключалась в том, чтобы запретить прямое нажатие на мастер; следовательно, этот вопрос. мы могли бы создать голый репозиторий и вытащить его, если это вообще поможет в нашем стремлении к мастеру только для чтения :) – kibitzer

Смежные вопросы