Gitolite ist ein Versionsverwaltungsserver der auf GIT basiert und eine denkbar einfache Konfiguration besitzt. Da die komplette Konfiguration über ein eigenes GIT-Repository läuft benötigt man kein Webinterface und hat sogar eine Versionsverwaltete Konfiguration.
Diese Anleitung bezieht sich auf Ubuntu 12.04 LTS. Ubuntu 10.04 hat Gitolite noch nicht in den Paketquellen! Für die Installation von Gitolite braucht man folgendes:
Zunächst solltet ihr den PublicKey auf den Server ziehen und dort irgendwo im Homeverzeichnis ablegen, ein Eintrag in die Datei /home/[USER]/.ssh/authorized_keys reicht nicht!
Wie ihr SSH-Keys erstellt hängt vom Client ab, meistens jedoch kann man die SSH-Keys über die Shell (Bei Linux und Mac) mit dem Befehl ssh-keygen
erstellen.
Gitolite kann einfach mit dem Befehl
sudo apt-get install gitolite
installiert werden. Dabei werden noch einige Pakte benötigt, wie bspw. git-core etc., welche aber automatisch mitinstalliert werden.
Die Konfiguration von Gitolite ist unter Ubuntu ebenfalls recht einfach. Bei der Installation wird Gitolite einige Warnmeldungen anzeigen, dass noch kein Admin-key eingetragen ist, das soll nun behoben werden. Eingerichtet wird Gitolite über den Paketmanager mit
sudo dpkg-reconfigure gitolite
Dann werdet ihr einige Dinge gefragt:
Nach diesem drei Punkten ist Gitolite in der Regeln konfiguriert und man kann nun Anfangen die Repository-konfiguration zu beginnen.
Wie bereits erwähnt erfolgt die produktive Konfiguration über ein eigenes Repository. Dieses müsst ihr euch auf den Rechner klonen dessen SSH-Key ihr als admin-key eingetragen habt. Der Clone funktioniert über git mit dem Befehl:
git clone [Gitoliteuser]@adresse.des.servers:gitlolite-admin.git
Die Authentifizierung erfolgt über den SSH-Schlüssel, das Repository wird geklont. Wird auf dem Server SSH nicht auf dem Standardport genutzt so muss der Clone-Befehl wie folgt lauten:
git clone ssh://[Gitoliteuser]@adresse.des.servers:[SSHPort]/gitolite-admin.git
Das Admin-Repository hat zwei Verzeichnisse die für bestimmte Zwecke verwendet werden:
Die Zugangsverwaltung für gitolite erfolgt wie für GIT üblich mit SSH-keys.
Pro Nutzer können beliebig viele SSH-Schlüssel für verschiedene Computer eingetragen werden. Die SSH-PublicKeys der Nutzer werden im Verzeichnis „keydir“ abgelegt.
Das Konzept ist denkbar einfach: Man nehme an, dass der Nutzer „hans“ zwei keys hat, einen für den Desktop, einen für den Laptop. Die beiden Schlüssel werden dann im keydir als hans@desktop und hans@laptop abgelegt.
Achtung: Der key admin darf unter keinen Umständen gelöscht werden! Der Nutzer, der das gitolite-admin Repository verwaltet muss immer als admin in den anderen Repositories eingetragen werden. Ein zusätzliche Upload des gleichen Schlüssels unter anderem Namen ist nicht möglich und führt zu Fehlern!
Hat man die Nutzer wie oben beschrieben angelegt kann man sich an die Konfiguration der repositories machen.
Die Struktur des Konfigurationsfiles ist denkbar einfach und wird am Beispiel erklärt:
#file gitolite.conf @projects projekt1 projekt 2 #1 @developers hans juergen #2 repo gitolite-admin #3 RW+ = admin #4 repo testing #5 RW+ = @all #6 repo hans_pub #7 RW+ = hans #8 R = juergen #9 repo projects #10 RW+ = developers #11
Gitolite unterstützt Gruppen die entweder Nutzer oder Repositories zusammenfassen. Der Syntax ist der gleiche und erst bei der Nutzung in der Konfiguration zeigen sich die Unterschiede.
Das Admin repository wird in den Zeilen #3 und #4 konfiguriert. Hier ist Vorsicht geboten, da man sich sonst schnell aussperrt! Zeile #5 und #6 definieren das von gitolite angelegt test-repo
Danach erfolgt die Definition der Repositories:
Die drei unterschiedlichen Lese- und Schreibrechte sind:
git push -f
nutzen.Hat man die Konfiguration angepasst und abgespeichert muss man sie committen und pushen:
git status
pruefen ob alle keys vorhanden sind und die config geändert wurde. Hier sollte man auch prüfen ob nicht eventuell das Dateisystem unbeobachtet Dateien angelegt hat (bspw. Indexdateien), die man ignorieren sollte.git add .
all Änderungen in den Index übernehmengit commit -m [Nachricht]
die Änderungen versionierengit push
die Änderungen auf den Server pushenAlle Änderungen werden sofort von Gitolite übernommen, neue Repositories und User werden angelegt.
Neue Repositories kann man dann mit entsprechenden Nutzerrechten mit einem der beiden folgenden Befehle klonen:
git clone [Gitoliteuser]@adresse.des.servers:[NameDesRepos].git #für SSH auf Port 22 git clone ssh://[Gitoliteuser]@adresse.des.servers:[SSHPort]/[NameDesrepos].git #SSH auf anderem Port
Löscht man ein Repository oder einen Nutzer werden diese zwar gesperrt, verbleiben aber physikalisch auf dem Server! Dazu muss man im Verzeichnis der Gitolite Repositories manuell das Repository löschen.