gitosis vs gitolite? [Zamknięte]

139

Szukam instalacji serwera git, aby udostępniać projekty mojemu zespołowi. Nie chcę tworzyć konta użytkownika na serwerze z dostępem SSH dla każdego programisty, który potrzebuje dostępu git. Wydaje się, że istnieją dwa równoległe rozwiązania, które obejmują ten problem: gitosis i gitolite.

Nie mogłem znaleźć porównania między obydwoma rozwiązaniami. Jakie są główne różnice między nimi? Czy są inne podobne rozwiązania?

greydet
źródło

Odpowiedzi:

191

Szukam instalacji serwera git, aby udostępniać projekty mojemu zespołowi.

Możesz po prostu użyć git.

Aby mieć serwer git, jedyną rzeczą, której potrzebujesz na serwerze zdalnym, jest git. Jeśli nie potrzebujesz szczegółowych uprawnień (udostępnianie tylko zespołowi sugeruje, że jest to możliwe) ani żadnych dodatkowych funkcji, nie potrzebujesz gitolite ani podobnego.

Rozwiązanie bez instalacji

Jeśli git jest dostępny na zdalnym serwerze, możesz teraz zrobić to, o co prosisz, nie robiąc nic

ssh [user@]server
cd repos/are/here/
mkdir project.git
cd project.git
git init --bare

Lokalnie:

cd projects/are/here/project
git remote add origin [user@]server:repos/are/here/project.git
git push -u origin master

Konfiguracja serwera git jest łatwa.

Jeśli chcesz robić rzeczy z dedykowanym użytkownikiem git, dokumenty dotyczące konfigurowania serwera git są krótkie - ponieważ jest to naprawdę dość łatwe.

W podsumowaniu:

  • Zainstaluj git
  • Utwórz użytkownika o nazwie git
  • Dodaj klucze publiczne swoje i swojego zespołu do .ssh/authorized_keyspliku użytkownika git
  • Zmień powłokę użytkownika git na git-shell
  • Utwórz repozytoria na serwerze
  • zacznij git pull / pushing do [email protected]

Tylko różnica między pomocą dedykowanego użytkownikowi git i nie jest to, że jeśli konfiguracja użytkownik git używać git-shellnie pozwoli sobie robić nic innego. Jednak pod względem działania jako serwer git jest identyczny z rozwiązaniem bez instalacji

AD7six
źródło
13
Po zainstalowaniu bestii, czyli GitLab + Gitolite, jeśli nie potrzebujesz dokładnej kontroli nad projektami itp., To jest droga.
Andrew T Finnell
Dziękuję za tę odpowiedź! Właściwie, kiedy powiedziałem, że nie chcę tworzyć kont użytkowników dla każdego z nich, powinienem również wspomnieć, że nie chcę, aby moi użytkownicy git mieli dostęp do powłoki serwera przez ssh. Myślę, że dzięki waszemu rozwiązaniu mieliby dostęp do powłoki przez użytkownika „git”, prawda?
greydet
2
@wsams: git push -u origin masteri możesz użyć git pushpo nim. Wolę gito *, ponieważ moim zdaniem nikt nie uzyskując dostępu do repozytorium nie powinien przejmować się bezwzględną ścieżką, jaką ma w zdalnym systemie.
ThiefMaster
8
@ThiefMaster zgaduje, co masz na myśli, jeśli umieścisz repozytoria w adresie /home/git/URL, aby uzyskać dostęp do projektu git@server:project.git.
AD7six,
1
@wsams przeczytaj tę część odpowiedzi „Zmień powłokę użytkownika git na git-shell”.
fabspro
142

Główna różnica polega na tym, że gitoza jest już przestarzała i nie jest już aktywnie utrzymywana.

Gitolite jest znacznie bardziej kompletny i właśnie wydał trzecią wersję .

Jego najciekawszą funkcją jest wirtualne odniesienie (w skrócie VREF), które pozwala zadeklarować tyle haków aktualizacji, ile chcesz, co pozwala ograniczyć push przez:

  • dir / file name :
    Powiedzmy, że nie chcesz, aby młodsi programiści wypychali zmiany do pliku Makefile, ponieważ jest on dość złożony:
    - VREF/NAME/Makefile = @junior-devs

  • liczba nowych plików :
    Powiedzmy, że nie chcesz, aby młodsi programiści wypychali więcej niż 9 plików na zatwierdzenie, ponieważ chcesz, aby robili małe zatwierdzenia:
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • zaawansowane wykrywanie typów plików :
    czasami plik ma standardowe rozszerzenie (którego nie można „gitignore”), ale w rzeczywistości jest ono generowane automatycznie. Oto jeden sposób, aby to złapać:
    - VREF/FILETYPE/AUTOGENERATED = @all
    Zobacz, src/VREF/FILETETYPEaby zobaczyć mechanizm wykrywania.

  • sprawdzanie adresu e-mail autora :
    Niektórzy chcą się upewnić, że „możesz przesyłać tylko własne zatwierdzenia”.
    - VREF/EMAIL-CHECK = @all
    Zobacz src/VREF/EMAIL-CHECK.

  • głosowanie na zatwierdzeń :
    Podstawowa implementacja głosowania na zatwierdzenie jest zaskakująco prosta:
    - VREF/EMAIL-CHECK = @all.
    # 2 votes required to push master, but trusted devs don't have this restriction
    # RW+ VREF/VOTES/2/master = @trusted-devs
    # - VREF/VOTES/2/master = @devs
    Zobacz src/VREF/VOTESrealizację.

  • i tak dalej...

VonC
źródło
3
Używam Gitolite od ponad 3 lat. Nigdy nie miałem z tym żadnych problemów. Nasze serwery produkcyjne i pomostowe mają dostęp tylko do odczytu do potrzebnych repozytoriów. Udostępnianie projektu innym zespołom programistów jest łatwym zadaniem. Również jest to łatwe do skonfigurowania, jeśli znasz już
unixa
Dokumentacja Gitolite zawiera porównania z alternatywami: gitolite.com/gitolite/gitolite.html#alt
Quinn Comendant
15

Tylko boczna uwaga. Możesz również użyć Gerrit do swoich potrzeb:

Przegląd kodu Gerrit

Po pierwsze wydaje się, że Gerrit jest używany do przeglądu kodu, ale w rzeczywistości można go również używać do zarządzania użytkownikami i nadawania im dobrze zdefiniowanych uprawnień. Możesz ominąć przegląd kodu (poprzez kontrolę dostępu ) i używać go tylko do zarządzania projektami i kluczami SSH. Gerrit ma naprawdę silny mechanizm kontroli dostępu:

Kontrola dostępu Gerrit

Możesz ograniczyć push dla dowolnych gałęzi, tagów lub czegokolwiek, co możesz sobie wyobrazić, co jest zdefiniowane w dokumencie kontroli dostępu.

Fatih Arslan
źródło
8

Aby uzyskać jeszcze szybsze i bardziej brudne rozwiązanie, po prostu użyj git daemon i przejdź do komunikacji peer-to-peer. Oto artykuł o tym.

Edycja: zdaję sobie sprawę, że to nie odpowiada ściśle na pytanie OP. Umieszczam to tutaj głównie dla tych, jak ja, którzy natknęli się na to, szukając słabego i brudnego sposobu na udostępnianie kodu, dopóki nie zostanie skonfigurowane korporacyjne konto github.

Tim Keating
źródło
2

Przez jakiś czas kręciłem się wokół, aby uzyskać serwer git działający z dostępem LDAP, drobnoziarnistą kontrolą dostępu itp ... Znalazłem rewelację: Użyj Gitlab :

  • repozytoria git
  • drobnoziarnisty dostęp (afaik gitlab używa gitolitu pod maską)

jeśli chcesz szybką i szybką metodę instalacji: użyj instalatora bitnami

Chris Maes
źródło
Tak, ale GitLab (z gitlab-shell) stracił wszystkie haczyki VREF, które można łatwo skonfigurować za pomocą Gitolite. I wiele osób chciałoby je z powrotem: github.com/gitlabhq/gitlab-shell/issues/14 i github.com/gitlabhq/gitlab-shell/pull/85
VonC