Подтвердить что ты не робот

GIT поддержка авторизации пользователя на основе ветки - лучшие практики или инструменты?

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

Например,

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

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

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

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

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

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

Спасибо.

ADDED Модель разветвления наилучшей практики Gitflow

4b9b3361

Ответ 1

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

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


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

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

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

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

Ответ 2

Положите крюк фиксации на стороне сервера, который отрицает фиксацию любых ветвей, которые вам нужны только для чтения, или на основе того, кто коммиттер.

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

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