Sebastien Badia Sys/Net admin engineer @Inria, LDN Co-founder.
Published

Fri 29 April 2011

Last modified

2014-02-23 17:07:00+01:00

←Home

Gitolite, management de repo git

Je voulais tester gitorious mais j'ai été un peu découragé par le nombre des dépendances... Je me suis donc installé, un gitolite + gitweb et redmine, et c'est parfait !

Apéro

Au niveau des pré-requis, il ne faut pas grand chose, juste un accès ssh, web, et un peu d'espace disque, pour que ce soit le plus propre possible, on crée au préalable deux utilisateurs.

Git qui sera l'utilisateur lambda

adduser --system --shell /bin/bash --gecos 'gitolite admin' --group --home /home/gitadmin gitadmin

Gitadmin, comme son nom l'indique l'admin pour gitolite.

adduser --system --shell /bin/bash --gecos 'gitolite user' --group --home /home/git git

On install git

apt-get update && apt-get install git-core ssh

Et on commence par autoriser gitadmin à se connecter en git sur la machine

su - gitadmin
ssh-keygen -t dsa

En copiant la clée publique dans le authorized_keys de git.

cat .ssh/id_dsa.pub >> /home/git/.ssh/authorized_keys

Plat

Disponible sur github gitolite se présente sous forme d'un repo. Voir aussi la méthode apt... en base de l'article

git clone git://github.com/sitaramc/gitolite.git
cd gitolite
src/gl-easy-install git localhost gitadmin

On reponds à deux trois questions, et l'installateur nous génère un dépôt gitolite-admin. Dans ce dernier, nous retrouvons deux repertoires, keydir, où sont stockés les clées publiques des utilisateurs, et conf où est stocké la conf des repos et les droits.

Gitolite-admin est lui-même un repo, et c'est le push de ce repo qui provoque, la création/mise a jours des droits, repo concernés…

Dessert

Pour la configuration coté client on peux commencer par configurer un host dans notre ~/.ssh/config

Host gitbian
  Hostname sebian.fr
  User git
  Port 666
  IdentityFile /home/%u/.ssh/id_dsa

On se connecte ensuite afin de voir nos repository et nos droits.

ssh gitldn

Ce qui provoque un output dans le genre.

hello sbadia, the gitolite version here is v2.0-27-gd74e58b
the gitolite config gives you the following access:
  R   W   ldn
 @R_ @W_  testing
Connection to sebian.fr closed.

Nous pouvons alors essayer de cloner le repo ldn

git clone gitbian:ldn.git

Bonus

Alertes jabber au moment d'un commit :)

# file repo.git/hooks/post-recieve
git log -1 | sendxmpp -t -s "*** repo.git/refs/heads/master - `date` ***" sebian seb@sebian.fr

Et voila :)

[EDIT] Je n'avais pas vu, mais un paquet debian gitolite est aussi disponible, c'est donc encore plus simple.

apt-get install gitolite
dpkg-reconfigure gitolite

Et on remplace gitolite par git pour coller avec notre install, et /var/lib/gitolite par /home/git, on colle la clé de gitadmin et voila le tour est joué.

Go Top