2011-01-12 3 views
9

То, что я пытаюсь достичь, является следующим: Сотрудники группы @coworkers, клиентов находятся в группе @clients.Deny READ конкретных ветвей репозитория с гитолитом

Git repo должен быть доступен для чтения и записи для всех, но должны быть специальные ветви. т.е. создать новую ветвь «стажер» и @coworkers имеют RW +-доступ, но клиенты не должны быть в состоянии R или W.

Я думал, что я могу достичь,

repo myrepo 
    - intern = @clients 
    RW+   = @clients @coworkers 

Но это делает не работа.

ответ

0

Я не специалист по гитолит, но я думаю правила обрабатываются в порядке. Вы пробовали просто изменить последние две строки? То есть сначала разрешайте разрешения для @clients и @coworkers, а затем во второй раз запрещаем доступ к intern через @clients.

9

Согласно discussion с автором gitolite, прочитайте ограничение доступа не представляется возможным для филиалов:

в Гиса материал Gitolite работает только для доступа к записи. Он не работает для доступа на чтение, потому что сам git не поддержка, которая делает это различие.

+0

Ограничение доступа для чтения недоступно в git * по дизайну * - при клонировании вы всегда должны извлекать полный репозиторий, нет никакого способа обойти его (без принципиального изменения, как работает git). – sleske

+0

Теперь возможно с частичной копией последней версии гитолита. Проверьте мой ответ ниже. –

3

Теперь можно ограничить доступ для чтения к gitolite ветви с последней версией gitolite v3.x с помощью partial-copy feature из gitolite

  1. Обязательно используйте последнюю версию gitolite
  2. раскомментируйте partial-copy линия в ENABLE секции ~/.gitolite.rc файла
  3. установить $GIT_CONFIG_KEYS = '.*' в ~/.gitolite.rc файл
  4. Используйте парциальных чтобы иметь другой репозиторий, который является копией исходного хранилища, но без каких-либо ветвей.

Пример: если вы хотите, чтобы клиент иметь доступ только к deploy ветви

repo my-repo 
    RW+  = @coworkers 

repo my-repo-deploy 
    RW deploy = @clients 
    -   = @clients 

    - VREF/partial-copy   = @all 
    config gitolite.partialCopyOf = my-repo 

если мерзавец жалуются, что он не может удалить мастер ветвь вы можете использовать эту команду на сервере:

Теперь
sudo git config --system receive.denyDeleteCurrent warn 
sudo git config --global receive.denyDeleteCurrent warn 

клиенты могут клонировать развернуть ветвь репозитория мой-репо-развертывания с помощью команды, как это:

git clone -b deploy [email protected]:my-repo-deploy