Gitolite est le remplaçant officiel de gitosis dans les dépôts debian, il s'agit d' une refactorisation de gitosis réalisée par Sitaram Chamarty.
L'intérêt de ce nouvel interface réside d'une part dans le fait qu'un utilisateur de git ne peut pas se connecter au shell de l'utilisateur gérant les dépôts (git ou gitolite) et d'autre part, on peut gérer des permissions spécifiques aux branches.
1.Quelques bases
Pour comprendre le fonctionnement de gitolite, il faut bien appréhender le fait que l'on va utiliser un utilisateur systeme git pour faire fonctionner gitolite et gérer les dépôts.
C'est dans le répértoire de cet utilisateur que l'on installera le logiciel gitolite, c'est aussi à travers lui que s'effectuera l'authentification par clés ssh, enfin c'est lui qui gérera les permissions accordées sur les dépôts.
L'administrateur du serveur ou un utilisateur dédié à l'administration de gitolite sera utilisé pour la gestion de l'administration de gitolite, c'est sur son répertoire home que sera cloné le dépôt correspondant à gitolite-admin. C'est par son intermédiaire que nous créerons les dépôts, et les permissions via les clés publiques des utilisateurs de git. La mise à jour de la configuration s'effectuera en commitant les changements effectués sur le fichier de configuration de gitolite présent dans gitolite-admin/conf.
2.Installation de gitolite
1Si ce n'est pas déjà fait, on installe git (pour le moins) et openssh !
> sudo apt-get install git-core openssh-server openssh-client
2On ajoute au système l'utilisateur git
> sudo useradd git -m -g git -d /home/git -s /bin/bash
3 On ajoute un mot de passe au nouvel utilisateur git
> sudo passwd git
4A partir du compte de l'administrateur serveur standart sur lequel nous nous trouvons normalement,
on crée la clef ssh que nous appelerons admin
ssh-keygen -t dsa
on doit alors avoir une paire de clef dans le répertoire .ssh du compte administrateur admin et admin.pub, la clef ayant l'extension .pub étant la clef publique.
5Cette clé on va la copier via la commande ssh-copy vers le repertoire de l'utilisateur git qui à partir de là saura que les requêtes provenant du propriétaire de
cette clé seront autorisées. les clés autorisées seront copiées dans un fichier appelé .authorized-keys
ssh-copy-id -i ~/.ssh/admin.pub <$git-user>@<$serveur> (serveur est normalement localhost,git-user est git)
6 Maintenant nous devons changer d'utilisateur pour l'utilisateur git afin d'installer gitolite.
> su git > git clone git://github.com/sitaramc/gitolite.git
7On crée un répertoire bin dans lequel viendrons les executables de gitolite.
> mkdir bin > gitolite/install -ln
8 On se place dans le répertoire bin pour lier la clé admin.pub à gitolite.
> cd bin > ./gitolite setup -pk ../.ssh/admin.pub
9Lorsque c'est terminé on revient en tant qu'utilisateur "administrateur" et on clone le dépôt gitolite-admin.
> su admin > git clone git@serveur:gitolite-admin
10Si tout a fonctionné correctement, il doit se trouver dans votre répertoire utilisateur un répertoire nommé gitolite-admin.
Le fichier de configuration se trouve dans le sous répertoire conf et s'appelle gitolite.conf, les clés publiques des utilisateurs sont à placer dans le sous-répertoire keydir.
Pour la configuration des dépôts, je vous renvoie à la doc officielle qui est très bien faite.doc de gitolite
3.Troubleshooting !!!
Si lors de la connexion ssh le serveur demande un mot de passe alors c'est que comme pour moi, votre serveur n'a pas pu identifier la clé qu'il lui faut utiliser pour se connecter à git. Pas de panique, pour que votre serveur ssh retrouve ses petits, on créé dans le répertoire .ssh de votre dossier utilisateur un fichier de configuration spécifique. Dans ce dernier, on va créer des alias que l'on va utiliser pour se connecter avec la clé à utiliser. . Ne pas oublier de définir forward agent à yes dans le fichier.
Exemple pour un hôte gitolite :
host gitolite user git hostname localhost identityfile ~/.ssh/admin.pub port 22 ForwardAgent yes
Pour récupérer les dépôts, on utilisera alors l'alias créé qui se chargera pour nous de récupérer le bon fichier de clé publique.
> git clone gitolite:gitolite-admin
Gitolite est maintenant installé sur votre serveur. Attention à l'ordre des opérations... Et bon code à tous.
Vos idées sur l'article nous interesse