Git - блокировка главной ветки для некоторых пользователей?

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

Я хотел бы иметь следующий "рабочий процесс"

  • разработка всегда выполняется только с помощью ветки разработки
  • менеджер-релиз отвечает за ведущую ветку, и только ему разрешено объединять материал из ветки разработки в мастер и нажимать ее на главную ветвь в центральном репозитории.

Возможно ли это и как я могу это достичь?

Ответы

Ответ 1

См. man githooks: в общем репо вы можете создать $(git rev-parse --git-dir)/hooks/pre-receive или $(git rev-parse --git-dir)/hooks/update script, который проверяет, пользователи пытаются нажать на которые ссылаются. Git поставляется с update-paranoid примером для принудительного применения ACL файлов для-ref.

Ответ 2

Мой низкоуровневый подход просто заключался бы в том, чтобы позволить RM быть единственным с SSH-ключами, чтобы нажать на репозиторий, все остальные используют в качестве основной базовой линии. Таким образом, никто, кроме RM, не может продвигаться, но все могут работать, так как у них есть свои собственные ветки локального развития, и разработчики могут делиться между собой ветвями, которые им нравятся.

Следующий шаг - сделать тестер для приготовления пищи для вещей, которые скоро пойдут в мастера. Этот банк обычно называется next или dev. Идея состоит в том, что чем больше влияние имеет отрасль, тем дольше она готовит до слияния, чтобы справиться с ней. Это дает RM полный контроль над тем, какие ветки должны заканчиваться, и все еще дает всем хед-ап.