W gerrit’cie dla utworzonych projektów możemy nadawać odpowiedni dostęp do repozytorium dla odpowiednich grup użytkowników. Gerrit udostępnia nam kilkanaście rozmaitych uprawnień, jednak w tym artykule skupimy się na najważniejszych z nich. Poniżej znajduje się lista uprawnień, z którymi na pewno się spotkasz.
Read
Uprawnienie Read daje dostęp do podejrzenia projektu, zobaczenia wprowadzonych zmian i pobranie repozytorium. Użytkownik z uprawnieniami Read może pobrać repozytorium na swój komputer i pracować na nim lokalnie.
Push
Uprawnienie Push pozwala użytkownikowi na wprowadzanie swoich zmian do repozytorium. W gerrity’cie są dwie możliwości wprowadzania zmian: z Code Reaw lub bez Code Review czyli wysłane zmiany od razu trafią do repozytorium. W zależności pod jaką ścieżką ustawimy to uprawnienie commity będą przechodzić przez Code Review lub też nie. By wymusić Code Review dla wprowadzonych nowych zmian ustawiamy uprawnienie Push w ścieżce refs/for/refs/heads/* natomiast dla uprawnienia Push bez Code Review ustawiamy uprawnienie w ścieżce refs/heads/*.
Push Merge Commits
Uprawnienie Push Merge Commits nadaje możliwość wysyłania merge do repozytorium. Zasada jest taka sama jak dla uprawnienia Push. Najczęściej nadaje się uprawnienia Push razem z Push Merge Commits. Developerzy muszą mieć możliwość wysyłania swoich zmian, rozwiązanych konfliktów oraz merge z innymi branchami do repozytorium.
Label: Verified
Uprawnienie Label Verified dedykowane jest dla narzędzi ciągłej integracji (CI). Sprawdzeniu czy projekt buduje się oraz czy testy automatyczne przechodzą. Można do tego wykorzystać np. Jenkinsa. Weryfikacja może przyjąć trzy wartości:
- -1 – weryfikacja nieudałą się, nie można wprowadzić zmian do repozytorium.
- 0 – weryfikacja jeszcze się nie wykonała.
- 1 – weryfikacja powiodła się.
Label: Code-Review
Uprawnienie Label Code-Review umożliwia wykonanie przeglądu kodu i wprowadzenie oceny czy dane zmiany mogą wejść do repozytorium. Ocena może przyjąć wartość od -2 do 2:
- -2 – zmiana nie może wejść do repozytorium. Kod jest kiepskiej jakości, są błędy. Zmiany powinny być poprawione.
- -1 – Zmiana nie powinna wejść do repozytorium. Kod nie wygląda dobrze lub wprowadzane zmiany nie do końca mam się podobają. Możemy przekazać Code Review innej osobie, by oceniła wprowadzane zmiany swoim doświadczeniem. Ocena -1 nie blokuje możliwości zatwierdzenia zmian.
- 0 – Ocena nie została jeszcze wykonana.
- 1 – Zmiany wyglądają dobrze ale są pewne wątpliwości. Kod wygląda dobrze ale dobrze było by, by ktoś inny jeszcze sprawdził czy wprowadzane zmiany są poprawne. Ocena 1 nie blokuje możliwości zatwierdzenia zmian.
- 2 – Wszystko wygląda dobrze, zmiany mogą wejść do repozytorium.
Submit
Uprawnienie Submit upoważnia użytkownika to ostatecznego zatwierdzenia wyprowadzanych zmian do repozytorium.
W gerrit’cie każdy projekt dziedziczy domyślne ustawienia uprawnień od All-Projects, aby nadać uprawnienia dla projektu z zakładki Project -> List wybieramy nasz projekt i przechodzimy do zakładki Access. Poniżej przedstawiłem przykład nadania uprawnień dla wcześniej zdefiniowanych grup.
Pamiętaj, że większość ustawień dziedziczone są z All-Projects, które też może być edytowane . Dla powyszego przykładu możesz odebrać uprawnienie Push i Push Merge Commit dla grupy Registered Users w All-Projects, by tylko grupa developers mogła wprowadzać zmiany do repozytorium przez code review. Resztę uprawnień pozostawiamy bez zmian. Więcej na temat uprawnień znajdziesz w dokumentacji gerrit’a pod adresem https://gerrit-review.googlesource.com/Documentation/access-control.html.