2013-01-07 23 views
5

Używam nagiego repozytorium, w którym wielu programistów może naciskać.Niepoprawna grupa sharedRepository

Zgodnie z sugestią, użyłem sharedRepository = true, aby powiedzieć git, aby dać grupie użytkowników uprawnienia do pushowania.

Gdy chcę dodać popychacze, po prostu dodaj je do żądanej grupy jak grupa wtórna (sudo adduser the_pusher the_required_group)

Kiedy deweloperów wcisnąć widzę pliki utworzone w objects katalogu utworzonego z dobrą zgody, ale nie dobra grupowych .

Przykład:

$ ls -l repository/objects 
... 
drwxrwsr-x 2 pusher1 pusher1 4096 janv. 7 14:13 fa 
drwxrwsr-x 2 pusher1 pusher1 4096 déc. 26 15:29 fc 
drwxrwsr-x 2 pusher1 pusher1 4096 déc. 11 12:41 fd 
... 

Jak widać, załączony grupa jest podstawową grupą pusher1

Jak mogę git, aby dołączyć te obiekty do the_required_group zamiast?


Aktualizacja

używam git przez ssh. Każdy dev ma swoje własne konto ssh.

+1

co protokół? git czy ssh? – CharlesB

+0

Pytanie zaktualizowane –

Odpowiedz

3

Mój zespół został ustalony przez ustawienie opcji s na wszystkich katalogów w repozytorium z chmod Aby to zrobić chown i chgrp plików i katalogów do właściwego użytkownika/grupy następnie chmod g+s wszystko w repozytorium.

+s powoduje, że nowe pliki mają grupę ich katalogu nadrzędnego. Zrobione z man 2 chown

  • Jeśli system plików jest zamontowany z -o nogrpid a bit set-group-ID jest włączona katalogu nadrzędnego, a następnie grupa nowego pliku jest taka sama jak z katalogu nadrzędnego.

Zobacz także man chmod i man 2 chmod

+0

To świetne rozwiązanie. Dam temu szansę. Czy nie możemy ustawić go tylko na "obiektach"? –

+0

Nie jestem pewien. Myślę, że powinieneś przynajmniej wykonać 'refs' i prawdopodobnie' info'. 'packed-refs' jest plikiem w katalogu głównym' $ GIT_DIR', który moim zdaniem może być okresowo modyfikowany przez naciśnięcia, ale nie jestem pewien. Jeśli jest to wymagane, '$ GIT_DIR' musi mieć ustawioną opcję. – asm