Использование gitosis для указания разрешений для каждой ветки?

Можно ли с помощью gitosis указать права на запись, чтобы пользователи могли свободно перемещаться в ветки со своим собственным именем, но не слиться с мастером? Например, $ USER / test1 .. $ USER / test5.

Это означает, что вы можете разместить только один репозиторий для каждого проекта, а не размещать несколько репозиториев для одного и того же проекта, специфичного для каждого пользователя:

 project1-user1
 project1-user2
 project1-user3
 ...
 project5-user1
 project5-user2
 project5-user3

Ответов (4)

Решение

Gitosis контролирует доступ к репозиториям, но не по ветке или фиксации. Таким образом, вы можете поместить мастер в репо отдельно, который имел доступ только для чтения, и позволить пользователям перемещать свои отдельные ветки в другое репо (или по одной для каждого пользователя, как вы говорите). Я не видел, чтобы кто-нибудь использовал гитозис для более точного контроля.

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

Этот скрипт, похоже, выполняет управление доступом для каждой ветки:

http://www.kernel.org/pub/software/scm/git/docs/howto/update-hook-example.txt

Эту функциональность предлагает проект Gitolite . Это переписанный Gitosis на Perl. Его код можно найти на github

Когда я впервые написал этот ответ, он не поддерживал gitweb или не git-daemon интегрировал, но теперь поддерживает.

Gitolite довольно хорошо поддерживает разрешение по именам веток или тегов.

В книге Pro GIT в этом разделе подробно объясняется, как установить и настроить права доступа для каждой ветви. Найдите на этой странице «Конфигурационный файл и правила контроля доступа».