2013-07-17 5 views
7

Sto configurando un ambiente di sviluppo su un server condiviso per più sviluppatori. Avrò un repository che ospita tutto il codice utilizzato in produzione e molti altri utilizzati per lo sviluppo da membri diversi del team. Quello che vorrei è che il repository di produzione sia "pull only". Gli utenti possono prelevare e ottenere modifiche di produzione localmente quando vogliono, ma i push devono essere gestiti da un amministratore di produzione o almeno richiedono una password. Qualcosa di simile:Come creare un repository git 'pull only'

[[email protected] /devroot/myrepo]$ git pull $PRODUCTION master 
From <location> 
*branch    master  -> FETCH_HEAD 
Already up-to-date 

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
error: user `user` is not authorized for this action 

O

[[email protected] /devroot/myrepo]$ git push $PRODUCTION master 
HEAD @ `$PRODUCTION`-Please enter password: 

credo che potrei farlo con i permessi dei file, ma questo non mi sembra una soluzione elegante. Git ha qualcosa di simile a questo?

risposta

3

Se si desiderano controlli di accesso a repository complessi, è possibile esaminare Gerrit. Il suo obiettivo principale è la revisione del codice (che vale anche la pena avere!), Ma anche il controllo degli accessi come effetto collaterale.

Altrimenti, se si desidera semplicemente qualcosa di veramente semplice, le autorizzazioni per i file sono un ottimo modo per gestirlo su una singola macchina. Finché un utente non può scrivere i file nella directory che contiene il repository, non può inviarlo. Non vedo nulla di inelegante a riguardo!

2

È possibile utilizzare gitolite o gitosis. Quindi puoi creare elenchi di utenti che possono tirare, spingere ogni ramo, chi può creare tag, ecc.

Conosco la gitolite meglio della gitosi. La configurazione è solo un repository git con sintassi semplice per i file.

0

Sono d'accordo con @duskwuff .. Dai un'occhiata a questo branching model. Questo ti aiuterà a ottenere solo il pull senza Gerrit

1

git stesso non include alcuna gestione dei diritti.

è possibile raggiungere questo livello superiore nel software che gestisce i repository git (se si sceglie un approccio un po 'centralizzato, ma credo che la maggior parte delle aziende lo desiderino). così gitolite (http://gitolite.com/gitolite/) o gitlab può farlo (http://gitlab.org/).

1

Un tipo di soluzione più "consenziente per adulti" funziona correttamente?

Ad esempio, in git si imposta solo il recupero remoto e si lascia il push remoto su un URL non esistente fittizio, in modo che un utente non possa accidentalmente corrispondere a git push.

Modifica: questo è simile a ciò che è accettato in this question.