Поддержка GIT для авторизации пользователей в филиалах - лучшие практики или инструменты? - PullRequest
10 голосов
/ 24 февраля 2011

Для GIT-репозитория на основе продуктов, в котором есть ветки для обслуживания, тестирования и дальнейшей разработки, как мне контролировать доступ пользователей к этим веткам? Под доступом я подразумеваю, что, хотя другие могут читать из него, они не должны быть в состоянии непреднамеренно выдвинуть изменения в репо.

Например,

A - B - C - D - E - F -> master
    |   |       |
    V1  V2'     exp
        |
        V2

«B» - это фиксация, используемая для Branch с тегом V1 - предназначена для выпущенной версии продукта. Только инженеры поддержки / обслуживания должны иметь доступ к этому.

C используется для недавно замороженного предварительного релиза продукта V2 'и должен допускать только критические исправления ошибок, так что только определенные разработчики и команда тестирования должны иметь к нему доступ. когда V2 выпущен из этой ветви, доступ к нему должен иметь только Support, как в случае с V1.

E используется для ветвления для тестирования новой функции для будущих V3 - только разработчики и не Поддержка должны иметь к ней доступ.

«Основные» изменения должны объединяться только по запросу (например, GitHub) группой центральной интеграции.

Как можно достичь вышеизложенного с помощью git? Я помню, как видел gitosis и некоторые другие внешние инструменты - они необходимы для безопасной работы с git или есть какие-то другие лучшие практики?

Спасибо.

* ДОБАВЛЕНО * 1019 Модель ветвления Gitflow для наилучшей практики

Ответы [ 2 ]

11 голосов
/ 24 февраля 2011

Другой классический способ ограничения push-доступа к репо (или ветви, или даже каталогу) - это использование gitolite (что на самом деле является большим эволюция gitosis).

Вы можете определить там (в файле конфигурации gitolite) любую нужную вам группу пользователей или группу репозиториев и связать права доступа RW.


Примечание: август 2013 г .:

Мы сняли ограничения на филиалы, которые можно настроить через экран администратора управления репозиторием.

Assembla также обеспечивает такую ​​защиту (с марта 2013 г.).

GitHub пока не имеет этой функции :
GitHub поддерживает эту функцию с сентября 2015 года: см. « Как защитить« master »в github? ».

1 голос
/ 24 февраля 2011

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

Для рабочего процесса запроса на слияние мы используем локальную установку Gitorious и отправляем запросы на слияние через его веб-интерфейс и ограничиваем репозиторий main-line для вашей команды по интеграции, все остальные будут работать с клонами на стороне сервера и затем отправить запросы на слияние обратно в основной репозиторий.

С Gitorious вам не нужны перехватчики на стороне сервера, вам просто нужно ограничить доступ к репозиторию main-line только теми людьми, для которых вы хотите быть коммиттером. Гораздо проще и проще в обслуживании.

...