Inhaltsverzeichnis

Aufsetzen eines Git-Servers mittels Gitolite

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.

Installation von Gitolite

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

Konfiguration

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

Einrichtung

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:

  1. Standart-Benutzername für Gitolite: Dieser Name wird später bei jedem Git-Projekt verwendet. Als Standard ist gitolite eingetragen, was auch so gelassen werden kann
  2. Homeverzeichnis des Benutzers: In diesem Verzeichnis werden später alle Git-Projekte verwaltet. Als Standard ist /var/lib/gitolite eingetragen, was ebenfalls so gelassen werden kann
  3. Pfad des Admin-Schlüssels: Hier muss der Pfad zum hochgeladenen öffentlichen Schlüssels eingetragen werden, der via SCP angegeben wurde. Im aktuellen Beispiel wäre es /tmp/git-admin.pub

Die Einrichtung von Gitolite ist nun abgeschlossen

Verwendung von Gitolite

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:

Administration

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:

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

Benutzergruppen

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.

Rechtevergabe auf Branches / Referenzen

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: