2012-04-30 13 views
41

Ho alcuni contributori nel mio progetto github. Voglio consentire solo a uno di loro di "spingere" per padroneggiare. E questo ragazzo non sono io (il proprietario del deposito). È possibile farlo?Come proteggere "master" in github?

+0

Si tratta di un progetto privato? Se non lo è, non hanno bisogno di essere collaboratori necessariamente - possono sborsare e utilizzare le richieste di trazione esclusivamente (che impone un livello di revisione pseudo-codice per unire le modifiche) – Daenyth

+1

Questa funzionalità non è supportata da GitHub, ma se siete alla ricerca per soluzioni simili: Assembla Repository supportano questo: http://blog.assembla.com/assemblablog/tabid/12618/bid/96330/Put-Down-Your-Forks-Introducing-Protected-Branches.aspx fai da te - self-hosting git: http://git-scm.com/book/ch7-4.html fai da te - self-hosting mercuriale: http://mercurial.selenic.com/wiki/AclExtension – Titas

+0

Vedi anche http://stackoverflow.com/a/5097437/6309 – VonC

risposta

34

Allora, quando questa domanda è stata pubblicata, GitHub non ti permetteva di specificare i privilegi di accesso a livello di filiale. Puoi farlo solo a livello di repository. Quindi quello che stai richiedendo non era possibile.

Se si vuole aggirare questa limitazione, io personalmente vedo due opzioni:

  • si potrebbe utilizzare una sorta di commit ganci, ecc almeno informare qualcuno che qualcosa di sbagliato è accaduto
  • Se davvero bisogno di questo controllo stretto, si potrebbe usare due repository, uno solo tenendo il tuo ramo "master". Dovresti quindi assicurarti che solo il tuo "ragazzo" abbia accesso in scrittura al master repository

Penso che sia più facile risolverlo con un'organizzazione. Nel mio team, non inviamo mai nulla direttamente al master, ma invece creiamo sempre richieste di pull. Ciò garantisce che almeno qualcuno dia un'occhiata prima che il codice venga unito e si possa anche definire una politica che solo il "ragazzo" è autorizzato a unire le richieste di pull.

Aggiornamento

GitHub now announced che saranno roll-out una nuova funzionalità denominata rami protetti. Questa funzione è stata presente in altre distribuzioni di git come Atlassian Stash per anni. Ti permetterà di proteggere alcuni rami dalle spinte. Tuttavia, non consente ancora la protezione completa basata su ACL delle singole filiali. Quindi potresti voler controllare questa funzionalità nel caso in cui non vuoi fare affidamento su una soluzione organizzativa come schema sopra.

+6

+1 per richieste pull. – Daenyth

+3

"non inviamo mai nulla direttamente al master", perché non puoi o perché hai accettato di non farlo? – yegor256

+3

Perché abbiamo accettato di non farlo. A volte è più facile trovare una soluzione soft anziché tecnica. – Sebi

3

Questo è esattamente ciò per cui è stata progettata la foratura. Avresti il ​​repository principale protetto e permetteresti permessi di lettura su quel repository per tutti i contributori. Quei contributori avrebbero sborsato il repo e avrebbero spinto le loro modifiche alle loro copie personali del repository principale. Quando sono pronti a introdurre il codice nel repository principale, invieranno una richiesta pull al repository principale. In questo caso, i proprietari del progetto principale potrebbero completare la richiesta di pull.

+3

Il problema con il flusso di lavoro di biforcazione/PR è che il membro che ha i privilegi di "scrittura" sul repository principale potrebbe ancora spingerlo. –

9

Nota: Protected branches and required status checks (3 settembre 2015) vi permetterà di proteggere un ramo

  • contro forzata spinto
  • contro la cancellazione
  • contro le modifiche unite fino controlli di stato richiesti passano

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


Dal mese di marzo 2016, come commented da Sander qui sotto, avete User and team restrictions

fonde volte ad un ramo protetta è meglio lasciarle a un gestore di rilascio o di un team di persone responsabili per la stabilità di quel particolare ramo . Le organizzazioni ora possono specificare quali membri e team possono inviare a un ramo protetto.

https://cloud.githubusercontent.com/assets/4719/14140705/ed98abac-f67a-11e5-951e-b48c842fb77f.png

+5

Peccato, non è ancora possibile limitare l'accesso al ramo per determinati membri .... Mi piacerebbe quella caratteristica per il ramo principale. –

+3

Sono d'accordo, o per lo meno in grado di limitare l'unione agli amministratori solo per le filiali protette. – joeybloggs

+1

@PratikBothra https://github.com/blog/2137-protected-branches-improvements Sembra che sia possibile ora. :) – Sander

0

Ora possiamo usare file "CODEOWNERS" per richiedono una revisione da Codice proprietari ad valida una richiesta di pull. Possiamo impostare diverse autorizzazioni in base al loro account GitHub.

vedere here e here

Problemi correlati