Jak chronić "master" w GitHubie?

Mam kilku współpracowników w moim projekcie github. Chcę, aby tylko jeden z nich "pchnął" do opanowania. A ten facet to nie ja (właściciel repozytorium). Czy to możliwe?

Author: Titas, 2012-04-30

4 answers

Wtedy, kiedy to pytanie zostało opublikowane, GitHub nie pozwalał na określenie uprawnień dostępu na poziomie gałęzi. Można to zrobić tylko na poziomie repozytorium. Więc to, o co prosisz, nie było możliwe.

Jeśli chcesz obejść to ograniczenie, osobiście widzę dwie opcje:

  • przydałyby się jakieś Hooki commit itp. aby przynajmniej poinformować kogoś, że stało się coś złego
  • Jeśli naprawdę potrzebujesz tej ścisłej kontroli, możesz użyć dwóch repozytoriów, jednego tylko trzymając gałąź "mistrza". Następnie musisz się upewnić, że tylko twój "facet" otrzyma dostęp do zapisu do głównego repozytorium

Myślę, że łatwiej jest to rozwiązać z jakąś organizacją. W moim zespole nigdy nie pchamy niczego bezpośrednio do mistrza, ale zamiast tego zawsze tworzymy pull requesty. To zapewnia, że przynajmniej ktoś spojrzy przed połączeniem kodu i można również zdefiniować zasadę, że tylko twój "facet" może scalić pull prośby.

Update

GitHub ogłosił teraz , że wprowadzi nową funkcję o nazwie protected branches. Ta funkcja jest obecna w innych dystrybucjach Gita, takich jak Atlassian Stash, od lat. Pozwoli to chronić niektóre gałęzie przed popychaniem. Jednak nadal nie pozwala na pełną ochronę poszczególnych gałęzi w oparciu o ACL. Warto więc sprawdzić tę funkcję, jeśli nie chcesz polegać na rozwiązaniu organizacyjnym jako zarysie powyżej.

 34
Author: Sebi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-07 07:15:20

Uwaga: chronione gałęzie i wymagane kontrole statusu (3 września 2015) pozwolą Ci chronić gałąź

  • przeciw wymuszonemu pchnięciu
  • przeciw usunięciu
  • przeciwko scalonym zmianom do czasu przejścia wymaganych kontroli statusu

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


Od marca 2016 roku, jak skomentował przez Sander poniżej, masz ograniczenia użytkowników i zespołów

Czasami łączy się z chronioną gałęzią najlepiej pozostawić je menedżerowi wydań lub zespołowi osób odpowiedzialnych za stabilność danej gałęzi. Organizacje mogą teraz określić, którzy członkowie i zespoły będą mogli przenieść się do chronionego oddziału.

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

 9
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:41

Do tego właśnie został zaprojektowany forking. Będziesz miał chronione główne repozytorium i będziesz zezwalał na uprawnienia do odczytu w tym repozytorium wszystkim współpracownikom. Ci współpracownicy rozwidlali repo i pchali swoje zmiany do swoich osobistych kopii głównego repo. Gdy są gotowi do wprowadzenia kodu do głównego repozytorium, wysyłają żądanie pull request do głównego repozytorium. W takim przypadku właściciele głównego projektu mogą wykonać żądanie pull.

 3
Author: kbuilds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-09 02:32:18

Możemy teraz użyć pliku "CODEOWERS", aby zażądać przeglądu od właścicieli kodu, aby zatwierdzić żądanie pull request. Możemy ustawić różne uprawnienia na podstawie ich konta GitHub.

Zobacz TUTAJ i TUTAJ

 0
Author: Malick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 11:32:05