Um in vollem Funktionsumfang auf ein entferntes git Repository zuzugreifen wird in den meisten Fällen SSH verwendet. Mit der richtigen Konfiguration hat diese Technik einige Vorteile.
Allgemein
Zum einen können auf dem Server Nutzerkonten eingerichtet werden, über die der Zugriff erfolgt. Dies ist jedoch bei mehreren Nutzern relativ aufwendig. Ein weiterer Nachteil ist, dass alle Nutzer auch einen Shell-Zugriff auf dem Server haben. Eine andere Möglichkeit ist es den Zugriff über einen einzigen Nutzer zu realisieren. Dabei kommen für die Authentifizierung SSH-Keys zum Einsatz. Diese Methode hat den Vorteil, dass die Verwaltung relativ einfach ist, sich der Administrationsaufwand auch bei vielen Nutzern in Grenzen hält und die Zugriffsrechte feingranularer eingerichtet werden können.
In den vergangen Jahren kam dafür in vielen Fällen gitosis zum Einsatz, doch leider wird dies schon seit 2009 nicht mehr aktiv weiterentwickelt und wird so langsam durch gitolite abgelöst. Im folgenden wird aus diesem Grund die Konfiguration von gitolite unter Ubuntu 10.04 beschrieben. Das Beschriebene sollte sich jedoch auch leicht auf andere Versionen und Distributionen übertragen lassen.
Installation
Leider stehen die Pakete für eine einfache Installation erst ab Ubuntu 10.10 zur Verfügung. Daraus ergeben sich zwei Möglichkeiten für die Installation. Zum einen kann es von Hand installiert werden oder es wird versucht ein bestehendes Paket aus einer neueren Ubuntu Version zu verwenden. Letzteres hätte den Vorteil, dass bei einem Upgrade auf Ubuntu 12.04 theoretisch keine größeren Probleme auftreten sollten.
Da es sich bei gitolite im Großen und Ganzen um ein "einfaches" Shell-Skript handelt, sind die Abhängigkeiten recht übersichtlich und es sollte ein möglichst Unproblematische Installation möglich sein. Für eine Installation unter Ubuntu 10.04 wird im weiteren die aktuelle Version aus der kommenden Ubuntu Version 12.04 verwendet. Dabei wird wie folgt vorgegangen.
Zunächst wird das aktuelle Paket von http://packages.ubuntu.com/precise/gitolite heruntergeladen und installiert.
$ sudo dpkg -i gitolite_2.2-1_all.deb
Wähle vormals abgewähltes Paket gitolite.
...
No adminkey given - not setting up gitolite.
...
Sollten noch Abhängigkeiten fehlen, dann können diese mit folgenden Befehl nachinstalliert werden.
$ sudo apt-get -f install
Zu diesem Zeitpunkt ist gitolite jedoch noch nicht konfiguriert, denn es fehlt der SSH-Key des Administrators. Dieser kann wie folgt erstellt werden. Achtung: Es muss darauf geachtet werden, dass keine existierende Key-Datei überschrieben wird.
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
...
Die Datei id_rsa.pub aus dem Beispiel wird anschließend auf den Server kopiert. Danach kann die Konfiguration abgeschlossen werden.
$ sudo dpkg-reconfigure gitolite
Während der Konfiguration sind folgende Angaben zu machen.
- Benutzername
- Repository-Pfad
- SSH-Schlüssel des Administrators (Im Beispiel ist dies die Datei id_rsa.pub, welche auf den Server kopiert wurde)
Die eigentliche Konfiguration wird mit Hilfe des Administrations-Repositorys durchgeführt. Dieses besitzt den Namen gitolite-admin und kann wie folgt geklont werden.
$ git clone GIT-USER@GIT-SERVEr:gitolite-admin
$ cd gitolite-admin
In diesem Ordner befinden sich zwei Unterordner. Im Ordner conf befinden sich die eigentlichen Konfigurationsdateien und im Ordner keydir befinden sich die Schlüssel der Nutzer, die per SSH auf eines der GIT-Repositories zugreifen dürfen. Die Konfiguration wird erst übernommen, wenn die Änderungen commited und auf den Server gepusht wurden.
Auf ein Repository kann dann wie folgt zugegriffen werden.
$ git clone GIT-USER@GIT-SERVEr:GIT-REPO