2011-01-12 9 views
9

Co staram się osiągnąć jest następujące: współpracowników są w grupie @coworkers, klientów są w grupie @klienci.Odmów READ konkretnych gałęzi repozytorium z gitolite

repozytorium Git będzie dostępne do odczytu i zapisu dla wszystkich, ale będą też specjalne oddziały. tj utworzyć nowy oddział „stażysta” i @coworkers ma acces RW +, ale klienci nie powinni być w stanie R lub W.

Myślałem, że mogę osiągnąć przez

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

Ale to robi nie działa.

Odpowiedz

0

Nie jestem ekspertem od gitolite, ale ja myślę, że reguły są przetwarzane w kolejności. Czy próbowałeś po prostu cofnąć ostatnie dwie linie? Oznacza to, że najpierw udzielamy zgody na @clients i @coworkers, a następnie odmawiamy dostępu do intern przez @clients.

9

Według discussion z autorem gitolite, przeczytaj ograniczenie dostępu nie jest możliwe dla oddziałów:

rzeczy Gitolite per-oddział działa tylko do zapisu. To nie działa dla dostępu do odczytu, ponieważ git sam nie obsługuje tego rozróżnienia.

+0

Ograniczanie dostępu do odczytu nie jest możliwe w git * przez projekt * - podczas klonowania zawsze musisz pobrać całe repozytorium, po prostu nie ma możliwości obejścia go (bez zasadniczej zmiany sposobu działania git). – sleske

+0

Jest to teraz możliwe dzięki częściowej kopii najnowszej wersji gitolite. Sprawdź moją odpowiedź poniżej. –

3

Jest obecnie możliwe, aby ograniczyć dostęp do odczytu gitolite oddziałów z najnowszej wersji gitolite v3.x Używanie partial-copy feature z gitolite

  1. Należy używać najnowszej wersji gitolite
  2. Odkomentuj partial-copy linia w sekcji ENABLE pliku ~/.gitolite.rc
  3. ustawić $GIT_CONFIG_KEYS = '.*' w ~/pliku .gitolite.rc
  4. Skorzystaj z partial- opcja kopiowania, aby mieć inne repozytorium, które jest kopią oryginalnego repozytorium, ale bez niektórych gałęzi.

Przykład: jeśli klient ma mieć tylko dostęp do deploy oddziału

repo my-repo 
    RW+  = @coworkers 

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

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

jeśli git skarżą się, że nie można usunąć gałąź master może użyć tego polecenia na serwerze:

sudo git config --system receive.denyDeleteCurrent warn 
sudo git config --global receive.denyDeleteCurrent warn 

klienci mogą teraz sklonować oddział wdrożyć repozytorium my-repo wdrożeniu z poleceniem podobnym do:

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