Геррит - как запретить прямое нажатие на "мастер", но разрешить другим ветвям - программирование
Подтвердить что ты не робот

Геррит - как запретить прямое нажатие на "мастер", но разрешить другим ветвям

Я хочу настроить конфигурацию, описанную ниже:

  • Зарегистрированный пользователь не может напрямую перенаправить свои изменения в мастер. Он должен внести эти изменения для обзора:

    "git push origin master" - он должен быть отклонен Gerrit (origin = Gerrit)

    "git push origin HEAD: refs/for/master" - это должно быть разрешено Gerrit

  • Зарегистрированный пользователь может создать новую ветку. Эта ветка будет рассматриваться как резервная копия и способ сотрудничества между двумя или более разработчиками, поэтому ее не следует рассматривать.

    "git push origin xyz_abc" - это должно быть разрешено Gerrit

Как мне настроить Gerrit для достижения такой функциональности?

4b9b3361

Ответ 1

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

1. Перейдите на страницу доступа к проекту

Проекты > Список > ваш_проект > Доступ

2. Изменить доступ

Нажмите кнопку "Изменить"

3. Добавить ссылку на refs/heads/*

Это ссылка для всех прямых нажатий. Мы собираемся настроить, кто может что-то сделать на этом пути.

Нажмите "Добавить ссылку" и введите "refs/heads/*" (без кавычек)

4. Отклонить разрешение "Push"

Разрешение Push - это тот, который контролирует, кто может делать прямые нажатия. Слияние толкает и толкает к Gerrit все равно будет разрешено (см. Примечания ниже).

  • Нажмите "Добавить разрешение" и выберите "Push".
  • Выберите группу пользователей, с которой вы хотите отказаться от нажатия (вы можете ввести "Зарегистрированные пользователи", если вы хотите заблокировать всех)
  • Выберите "DENY" из раскрывающегося списка, которое появляется после добавления вашей группы пользователей.

5. Сохранить изменения

И все готово. Готовая конфигурация должна выглядеть примерно так:

Готовая конфигурация


Примечание

Если это не работает, убедитесь, что у вас установлено разрешение Push для ALLOW на refs/for/refs/* - это разрешение, которое позволяет нажимать на Gerrit.

Ответ 2

AFAIK вы можете настроить разрешения для каждого репо/проекта в gerrit. Например, кто может нажать/кто может заставить толкнуть/кто может одобрить ваши изменения и все такое. Проверьте ссылку ниже, если это полезно:

https://git.eclipse.org/r/Documentation/access-control.html

Ответ 3

Если существует много ветвей, вы можете использовать пространства имен (например, dev/*) для ветвей и установить контроль доступа для этих пространств имен.