Publié le

Gitolite

Installation de gitolite

Gitolite est une surcouche de git pour installer simplement un serveur centralisé, voici quelques une de ses nombreuses qualités :

  • gestion facile de multiples utilisateurs
  • configuration de l’authentification avec des clés SSH
  • gestion de la configuration via un dépôt
  • configuration des dépôts avec un fichier plat

Comme gitolite est un outil simple, l’installation va prendre au maximum 5 minutes, c’est promis. Le plus long sera d’apprivoiser gitolite qui est pourtant, je me répète, très simple.
Tout d’abord, il faut créer un utilisateur “git”, le choix de l’emplacement de son “$HOME” est libre, de plus veillez bien à créer un compte qui n’a pas de mot de passe :

$> adduser --system --shell /bin/bash --group --disabled-password --home /var/git git

Ensuite, il faut installer les binaires de git et de gitolite en tant qu’utilisateur “root” si ce n’est déjà fait :

$> apt-get update && apt-get install git gitolite

L’installation de gitolite est à proprement parlé terminée, il ne reste qu’à initialiser l’outil.

Initialisation

Pour fonctionner, Gitolite a besoin de clé SSH pour authentifier les utilisateurs, il faut donc importer une clé pour un utilisateur. Je vais copier une clé que j’ai déjà sur ma machine vers le serveur, pour l’importer ensuite dans gitolite :

$> scp ~/.ssh/username.pub username@mon-serveur.fr:/tmp

Rendez-vous dans le $home de votre utilisateur git, connectez-vous en utilisateur git et saisissez la commande suivante pour initialiser le dépôt qui contiendra la configuration :

$> su git
$> gl-setup /tmp/username.pub
creating gitolite-admin...
Initialized empty Git repository in /var/git/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /var/git/repositories/testing.git/
[master (root-commit) 4c6c453] start
 2 files changed, 8 insertions(+), 0 deletions(-)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/username.pub

Voila, c’est terminé, vous avez configuré gitolite, maintenant il ne reste plus qu’a savoir comment on utilise tous ça !

Comme vous l’avez vu dans la sortie de la commande de setup, deux repo ont été créés : “gitolite-admin” et “testing”. Le premier dépôt, c’est celui qui contient la configuration de gitolite, vous vous en doutez je vous déconseille de le supprimer
En revanche, “testing” est là pour faire des tests et nous allons en profiter pour directement le supprimer.

Prise en main de la configuration

Je sais pas expérience que Gitolite peut paraître intimidant puisque j’avais choisi de ne pas l’utiliser au début, mais en vérité c’est un outil très simple à prendre en main.

Ajouter, supprimer un dépôt

Pour pouvoir éditer la configuration, il faut justement la cloner sur notre machine à l’aide de la commande qui suit :

$> git clone git@mon-serveur.fr:gitolite-admin.git gitolite-admin

Une fois la configuration sur votre machine, ouvrez le fichier gitolite-admin/conf/gitolite.conf. Vous devriez voir les deux dépôts mentionnés lors de la création de la configuration :

repo    gitolite-admin
     RW+     =   username
 
repo    testing
     RW+     =   @all

La configuration d’un dépôt se fait avec l’utilisation du mot clé repo suivi de son nom, les lignes qui le suivent correspondent aux droits des utilisateurs authorisés de ce dépôt. Ainsi, si l’on veut supprimer un dépôt il faut supprimer la ligne repo et les authorisations associées.

Supprimer le dépôt “testing” du fichier de configuration, pour que les changements soient pris en compte par gitolite, il ne reste plus qu’à commiter, pusher la modification et le dépôt sera magiquement détruit par gitolite !

Ajouter, supprimer un utilisateur

Un utilisateur authorisé est représenté par une clé SSH publique dans le répertoire keydir. Pour ajouter un utilisateur, il suffit de copier la clé publique du nouvel utilisateur dans le dépôt dans le répertoire keydir, commiter, pusher et voila, le nouvel utilisateur peut cloner des dépôts.

Mais n’oubliez pas de configurer vos dépôts (comme vu précédement), pour que l’utilisateur puisse les cloner chez lui.

Conclusion

Gitolite est une solution gratuite, puissante, flexible pour héberger soi-même son serveur git centralisé.

Si vous voulez héberger des dépôts privés, Gitolite vous permet d’économisez quelques dollars par mois, en annulant votre abonnement Github par exemple.