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:

  • conf: Das Verzeichnis beinhaltet die Datei gitolite.conf und beinhaltet die Einstellungen für die Git-Repositories
  • keydir: Das Verzeichnis beinhaltet alle öffentlichen Schlüssel von den Computern, die mit Git-Repositories auf diesem Server agieren

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:

  • Mit repo <Name des Repos> wird ein neues Repo erzeugt. Es muss mindestens ein Benutzer zu diesem Repository gehören, damit es angelegt wird.
  • Mithilfe bestimmter Berechtigungen können Benutzer zu einem Repository hinzugefügt werden:
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:

  • Alice darf im Repo test alles
  • Bob darf im Repo test normal arbeiten, jedoch keine Referenzen anlegen oder löschen (wegen Zeile 6)
  • Bob darf aber in allen Branches die mit dev/ beginnen auch Referenzen anlegen oder löschen (wegen Zeile 5)
  • Bob darf nicht (dafür steht das Minus) Tags anlegen, die mit v und einer Zahl beginnen (wegen Zeile 4)
  • Bob hat keine Berechtigungen für den Branch master
comp/linux/gitsetup.txt · Zuletzt geändert: 16.06.2016, 00:20 Uhr von wikiredaktion@reneknipschild.de
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
rkWiki wird freundlich bereitgestellt von
René Knipschild – Custom Software Development, Ihr Partner in Sachen IT-Beratung & individueller Software-Entwicklung. www.IT-Beratung-Nordhessen.de – Made in Germany
Copyleft inverted copyright sign 2012-2022 René Knipschild | www.reneknipschild.net | Impressum | Datenschutz