Inhaltsverzeichnis

Installation Gitolite Versionsverwaltungsserver

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.

Vorbereitungen

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:

  1. Server mit konfiguriertem SSH-Zugang (am besten über den Standardport und mit PublicKey-Authentifizierung).
  2. GIT-Client auf dem lokalen Rechner
    1. Unter Linux einfach über den Paketmanager installieren
    2. Bei MacOS über Portierungsprogramme wie „Homebrew“ oder „Macports“ installieren
    3. Unter Windows am besten GIT mit GitBash installieren.
  3. SSH PublicKey des eigenen Rechners im richtigen Format (Mit Putty-PublicKeys funktioniert das nicht)
  4. Ein bisschen Ahnung wie GIT funktioniert.

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 Installation

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.

Grundkonfiguration

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:

  1. An welchem Ort die Gitrepositories liegen sollen. Hierbei solltet ihr einen ordentlichen Pfad wählen, wie bspw /srv/gitolite. Fall noch nicht vorhanden wird der Paketmanager diesen Pfad erstellen.
  2. Wie soll der Nutzer heißen, mit dem auf die Repositories zugegriffen werden soll. Nehmt hier bitte keinen User, der produktiv genutzt wird, also kein Admin- oder Nutzerkonto. Am besten eignet sich gitolite, da dieser Nutzername auch bei jedem Clone eines Repositories genutzt werden muss
  3. Den Speicherort des SSH-PublicKeys den man vorher hochgeladen hat. Bitte auf entsprechende Leserechte achten!

Nach diesem drei Punkten ist Gitolite in der Regeln konfiguriert und man kann nun Anfangen die Repository-konfiguration zu beginnen.

Verwaltung von Nutzern und Repositories

Checkout admin-repo

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:

Verwaltung Nutzer

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!

Verwaltung Repos

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:

  1. R: Nutzer darf nur lesen
  2. RW: Nutzer darf lesen und schreiben
  3. RW+: Nutzer darf lesen und schreiben und den Befehl git push -f nutzen.

Upload Config

Hat man die Konfiguration angepasst und abgespeichert muss man sie committen und pushen:

  1. Mit 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.
  2. Mit git add . all Änderungen in den Index übernehmen
  3. Mit git commit -m [Nachricht] die Änderungen versionieren
  4. Mit git push die Änderungen auf den Server pushen

Alle Ä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öschen von Repositories

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.