Gitose gegen Gitolit? [geschlossen]

139

Ich suche nach einer Installation eines Git-Servers, um Projekte mit meinem Team zu teilen. Ich möchte nicht für jeden Entwickler, der einen Git-Zugriff benötigt, ein Benutzerkonto auf dem Server mit SSH-Zugriff erstellen. Es scheint, dass es zwei gleichzeitige Lösungen gibt, die dieses Problem abdecken: Gitosis & Capitolit.

Ich konnte keinen Vergleich zwischen beiden Lösungen finden. Was sind die Hauptunterschiede zwischen ihnen? Gibt es eine andere ähnliche Lösung?

greydet
quelle

Antworten:

191

Ich suche nach einer Installation eines Git-Servers, um Projekte mit meinem Team zu teilen.

Sie können nur Git verwenden.

Um einen Git-Server zu haben, brauchen Sie auf dem Remote-Server nur Git. Wenn Sie keine detaillierten Berechtigungen (das Teilen mit nur Ihrem Team deutet darauf hin, dass dies möglich ist) oder zusätzliche Funktionen benötigen, benötigen Sie kein Gitolite oder ähnliches.

Die No-Install-Lösung

Wenn git auf dem Remote-Server verfügbar ist, können Sie das tun, was Sie gerade verlangen, ohne etwas zu tun

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

Örtlich:

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

Das Einrichten eines Git-Servers ist einfach.

Wenn Sie Dinge mit einem dedizierten Git-Benutzer tun möchten, sind die Dokumente zum Einrichten eines Git-Servers kurz - weil dies wirklich recht einfach ist.

Zusammenfassend:

  • Git installieren
  • Erstellen Sie einen Benutzer namens git
  • Fügen Sie die öffentlichen Schlüssel Ihres und Ihres Teams zur .ssh/authorized_keysDatei des Git-Benutzers hinzu
  • Ändern Sie die Shell des Git-Benutzers in git-shell
  • Erstellen Sie Repos auf dem Server
  • Starten Sie git pull / push an [email protected]

Der einzige Unterschied zwischen der Verwendung eines dedizierten Git-Benutzers und der Verwendung eines dedizierten Git-Benutzers besteht darin, dass sich der Git-Benutzer beim Einrichten git-shellnicht dazu berechtigt, etwas anderes zu tun. In Bezug auf die Funktion als Git-Server ist dies jedoch identisch mit der No-Install-Lösung

AD7six
quelle
13
Wenn Sie nach der Installation des GitLab + Gitolite-Biests keine genaue Kontrolle über Projekte usw. benötigen, ist dies der richtige Weg.
Andrew T Finnell
Vielen Dank für diese Antwort! Als ich sagte, dass ich nicht für jedes Benutzerkonto erstellen möchte, hätte ich auch erwähnen sollen, dass ich nicht möchte, dass meine Git-Benutzer über ssh Zugriff auf die Server-Shell haben. Ich denke, mit Ihrer Lösung hätten sie über den Benutzer "git" Zugriff auf die Shell, oder?
Greydet
2
@wsams: git push -u origin masterund du kannst danach verwenden git push. Ich bevorzuge gito *, weil meiner Meinung nach niemand, der auf ein Repo zugreift, sich um den absoluten Pfad kümmern muss, den es auf dem Remote-System hat.
ThiefMaster
8
@ThiefMaster raten wild, was Sie meinen, wenn Sie Repos in /home/git/die URL einfügen, um auf ein Projekt zuzugreifen git@server:project.git.
AD7six
1
@wsams las diesen Teil der Antwort "Ändere die Shell des Git-Benutzers in Git-Shell".
Fabspro
142

Der Hauptunterschied besteht darin, dass die Gitose inzwischen veraltet ist und nicht mehr aktiv aufrechterhalten wird.

Gitolite ist viel umfassender und hat gerade seine dritte Version veröffentlicht .

Die interessanteste Funktion ist die virtuelle Referenz (kurz VREF) , mit der Sie so viele Update- Hooks deklarieren können, wie Sie möchten, wodurch Sie einen Push-by einschränken können:

  • Verzeichnis- / Dateiname :
    Angenommen, Sie möchten nicht, dass Nachwuchsentwickler Änderungen am Makefile vornehmen, da dies recht komplex ist:
    - VREF/NAME/Makefile = @junior-devs

  • Anzahl neuer Dateien :
    Angenommen, Junior-Entwickler möchten nicht, dass mehr als 9 Dateien pro Commit übertragen werden, da sie kleine Commits ausführen sollen:
    - VREF/COUNT/9/NEWFILES = @junior-devs

  • Erweiterte Dateityperkennung :
    Manchmal hat eine Datei eine Standarderweiterung (die nicht "gitignore'd" sein kann), aber sie wird tatsächlich automatisch generiert. Hier ist eine Möglichkeit, es zu erfassen:
    - VREF/FILETYPE/AUTOGENERATED = @all
    Sehen src/VREF/FILETETYPESie sich den Erkennungsmechanismus an.

  • Überprüfen der E-Mails des Autors :
    Einige Personen möchten sicherstellen, dass "Sie nur Ihre eigenen Commits pushen können".
    - VREF/EMAIL-CHECK = @all
    Siehe src/VREF/EMAIL-CHECK.

  • Abstimmung über Commits :
    Eine grundlegende Implementierung der Abstimmung über Commits ist überraschend einfach :
    - 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
    Siehe src/VREF/VOTESfür die Implementierung.

  • und so weiter...

VonC
quelle
3
Ich benutze Gitolite seit über 3 Jahren. Hatte nie Probleme damit. Ich, unsere Produktions- und Staging-Server, haben nur Lesezugriff auf die Repos, die benötigt werden. Und es ist einfach, ein Projekt mit anderen Entwicklungsteams zu teilen. Auch ist es einfach
einzurichten,
Die Gitolite-Dokumentation enthält Vergleiche mit Alternativen: gitolite.com/gitolite/gitolite.html#alt
Quinn Comendant
15

Nur eine Nebenbemerkung. Sie können Gerrit auch für Ihre Anforderungen verwenden:

Gerrit Code Review

Zunächst scheint Gerrit für die Codeüberprüfung verwendet zu werden, aber Sie können es auch zum Verwalten von Benutzern verwenden und ihnen genau definierte Berechtigungen erteilen. Sie können die Codeüberprüfung (über Zugriffskontrollen ) umgehen und sie nur zum Verwalten von Projekten und SSH-Schlüsseln verwenden. Gerrit hat einen wirklich starken Zugangskontrollmechanismus:

Gerrit Access Controls

Sie können die Suche nach Zweigen, Tags oder allem, was Sie sich vorstellen können, das im Dokument zur Zugriffskontrolle definiert ist, einschränken.

Fatih Arslan
quelle
8

Für eine noch schnellere und schmutzigere Lösung verwenden Sie einfach den Git-Daemon und gehen Sie Peer-to-Peer. Hier ist ein Artikel darüber.

Bearbeiten: Ich erkenne, dass dies die Frage des OP nicht streng beantwortet. Ich habe dies hier hauptsächlich für diejenigen wie mich angegeben, die darauf stoßen, während sie nach einer heruntergekommenen und schmutzigen Möglichkeit suchen, Code zu teilen, bis ein Unternehmens-Github-Konto eingerichtet wird.

Tim Keating
quelle
2

Ich habe eine Weile herumgespielt , um einen Git-Server mit LDAP-Zugriff, fein abgestimmter Zugriffskontrolle usw. zum Laufen zu bringen. Eine Offenbarung gefunden: Verwenden Sie Gitlab :

  • Git-Repositories
  • feinkörniger Zugang (afaik gitlab verwendet Kapitolit unter der Haube)

Wenn Sie die schnelle und schnelle Installationsmethode wünschen: Verwenden Sie das Bitnami-Installationsprogramm

Chris Maes
quelle
Ja, aber GitLab (mit Gitlab-Shell) hat alle VREF-Hooks verloren, die Sie mit Gitolite problemlos einrichten konnten. Und viele Leute möchten sie zurück: github.com/gitlabhq/gitlab-shell/issues/14 und github.com/gitlabhq/gitlab-shell/pull/85
VonC