Um einen Git-Server aufzusetzen, benötigt es unter Linux nicht viel Software. Gitolite, ein Werkzeug, welches Git mit SSH verbindet, hilft, die Einrichtung eines Servers sehr einfach zu gestalten. Das Besondere an Gitolite ist zudem, dass die Administration des Git-Servers ebenfalls über ein Git-Repository verläuft. Diesem Wiki-Eintrag liegt einem Wiki-Eintrag der UbuntuUsers-Community 1) sowie das Handbuch für Gitolite 2) zu Grunde.
Um Gitolite zu installieren, genügt es unter Debian folgenden Befehl auszuführen:
sudo apt-get install gitolite
Bzw. unter Ubuntu 16.04:
sudo apt-get install gitolite3
Damit Gitolite einwandfrei funktionieren kann, muss zunächst der zukünftige Administrator seinen öffentlichen SSH-Schlüssel auf den Server transferieren. Sofern noch kein Schlüssel für SSH erstellt wurde, kann dieser mit dem folgenden Befehl generiert werden:
ssh-keygen -t rsa
Der nun erzeugte öffentliche Schlüssel (erkennbar an der Endung .pub) muss nun auf den Server transferiert werden. Hierzu eignet sich beispielsweise SCP:
scp /pfad/zum/generierten/schluessel.pub username@example.org:/tmp/git-admin.pub
Gitolite kann nun auf dem Server eingerichtet werden. Auf dem Server muss nun folgender Befehl eingegeben werden:
sudo dpkg-reconfigure gitolite
Hierbei werden drei Fragen gestellt:
gitolite
eingetragen, was auch so gelassen werden kann/var/lib/gitolite
eingetragen, was ebenfalls so gelassen werden kann/tmp/git-admin.pub
Die Einrichtung von Gitolite ist nun abgeschlossen
Gitolite ist nun fertig konfiguriert und kann nun verwendet werden. Der Computer, von dem der öffentliche Admin-Schlüssel hochgeladen wurde, muss sich nun das administrative Git-Repository herunterladen. Dies kann in ein beliebigen Verzeichnis erfolgen:
git clone gitolite@example.org:gitolite-admin
Im Verzeichnis befinden sich nun folgende Ordner:
gitolite.conf
und beinhaltet die Einstellungen für die Git-Repositories
Um Git-Repositories administrieren zu können, muss die Datei conf/gitolite.conf
geöffnet werden. Der Inhalt dieser Datei sieht wie folgt aus:
repo gitolite-admin RW+ = admin repo testing RW+ = @all
Der Zugriff auf das testing-Repo kann gelöscht werden, in dem die Zeilen 4+5 gelöscht werden. Um neue Repositories hinzuzufügen, hier eine kurze Erläuterung der Syntax:
repo <Name des Repos>
wird ein neues Repo erzeugt. Es muss mindestens ein Benutzer zu diesem Repository gehören, damit es angelegt wird.Syntax | Erläuterung |
---|---|
R | Benutzer erhält nur lesenden Zugriff |
RW | Benutzer erhält auch schreibenen Zugriff |
RW+ | Benutzer erhält erweiterte Berechtigungen (Push zurückziehen oder Referenzen löschen) |
Es existieren noch weitere Berechtigungen, die hier nachgelesen werden können
Neu hinzugefügte Repos können dann unter dem folgenden Link geklont werden:
git clone gitolite@example.org:NeuerRepoName
Es ist unter Gitolite auch möglich, Benutzergruppen festzulegen. Dies kann mit der folgenden Syntax erledigt werden:
@entwickler = eifx deedee0815 repo test RW+ = @entwickler
Auch Gruppen in Gruppen sind möglich. Hierbei verhält sich Gitolite jedoch recht konservativ:
@gruppea = a b @gruppeb = c @gruppea @gruppea = x
x
ist nicht in diesem Beispiel nicht Mitglied der Gruppe gruppeb
Weitere Möglichkeiten können hier entnommen werden.
Mithilfe von Gitolite ist es außerdem möglich, bestimmte Berechtigungen nur auf bestimmte Branches / Referenzen zu vergeben. Hier ein kleines Beispiel:
repo test RW+ = alice - master = bob - refs/tags/v[0-9] = bob RW+ dev/ = bob RW = bob
Erläuterung:
test
allestest
normal arbeiten, jedoch keine Referenzen anlegen oder löschen (wegen Zeile 6)dev/
beginnen auch Referenzen anlegen oder löschen (wegen Zeile 5)v
und einer Zahl beginnen (wegen Zeile 4)master