2013-01-07 8 views
5

Uso un repository spoglio in cui più sviluppatori possono spingere.sharedRepository gruppo errato

Come suggerito, ho usato sharedRepository = true per dire a git di dare a un gruppo di utenti il ​​permesso di spingere.

Quando voglio aggiungere spacciatori, ho semplicemente aggiungerli al gruppo richiesto come gruppo secondario (sudo adduser the_pusher the_required_group)

Quando sviluppatori spingono, vedo i file creati in objects directory creata con il bene il permesso, ma non il bene del gruppo .

Esempio:

$ 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 
... 

Come si può vedere, il gruppo collegato è il gruppo primario di pusher1

Come posso fare git per collegare questi oggetti per the_required_group invece?


Aggiornamento

io uso Git su SSH. Ogni dev ha il proprio account ssh.

+1

quale protocollo? git o ssh? – CharlesB

+0

Domanda aggiornata –

risposta

3

La mia squadra ha risolto questo impostando l'opzione s su tutte le directory nel repository con chmod Per fare questo chown e chgrp i file e le directory per l'utente/gruppo corretto poi chmod g+s tutto nel repository.

Il +s fa sì che i nuovi file abbiano il gruppo della directory principale. Tratto da man 2 chown

  • Se il file system è montato con -o nogrpid e il bit set-group-ID è abilitata nella directory genitore, quindi il gruppo di un nuovo file è fatto lo stesso come quello della directory genitore.

Vedi anche, man chmod e man 2 chmod

+0

Questa è una soluzione interessante. Lo proverò. Non potremmo impostarlo solo su 'objects'? –

+0

Non ne sono sicuro. Penso che almeno dovresti fare anche 'refs 'e probabilmente' info'. 'packed-refs' è un file nella radice di' $ GIT_DIR' che penso possa essere modificato periodicamente da push, ma non ne sono sicuro. Se è questo richiederebbe il '$ GIT_DIR' per avere l'opzione impostata. – asm