Git
Citation : Wikipédia (fr)Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, le créateur du noyau Linux, et distribué sous la GNU GPL version 2.Git seul permet de créer et d'utiliser pleinement un dépot privé (local), ou un dépot public sans gestion des droits d'accès) via git-daemon.
Pour héberger un dépot git, et avoir une gestion plus fine des droits d'accès, il faudra passer par un serveur tiers : gitosis, ou comme ici, gitolite, une réécriture du premier.
Gitolite
Gitolite permet d'héberger des dépôts git, en y ajoutant une gestion des droits d'accès, non seulement par dépôt (comme le fait déjà gitosis) mais aussi par branche et par tag. Il permet notamment de préciser si un utilisateur (ou groupe d'utilisateur) a le droit de push sur une branche.Gitolite permet de gérer un grand nombre de dépôt et d'utilisateurs, sans même avoir besoin de leur donner un compte sur le serveur, mais juste en intégrant leur clef publique.
Installation
Pré-requis
Pour ces explications, je me base sur une Debian Squeeze, mais le principe reste le même pour une autre distribution. Attention cependant aux distributions un peu anciennes : la version packagée de git sur Lenny est trop ancienne pour gitolite.
Préparation
Gitolite nécessite un utilisateur particulier pour gérer les dépots, il est possible d'utiliser root, mais je préfère créer un compte gitadmin.
L'utilisateur gitadmin doit pouvoir se connecter sur le compte git, il faut donc jouer un peu avec les clef ssh :
adduser --system --shell /bin/bash --password gitadmin --gecos 'git version control' --group --home /home/gitadmin gitadmin adduser --system --shell /bin/bash --password git --gecos 'git version control' --group --home /home/git git
Se connecter avec le compte gitadmin, créer sa clef publique et ajouter la clef de gitadmin à la liste des clefs autorisées de git:
su - gitadmin ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub git@localhost
Installation de gitolite
La première chose à installer est bien entendu git :
apt-get install git-core
Ensuite, pour installer gitolite, nous allons cloner le dépot :
git clone git://github.com/sitaramc/gitolite.git cd gitolite src/gl-easy-install git localhost gitadmin
Le script d'installation va poser plusieurs questions, la réponse par défaut ira très bien.
Configuration
La configuration de Gitolite est très simple. Elle se fait via un dépôt de configuration gitolite-admin, clôneé dans le répertoire personnel de gitadmin. C'est dans celui-ci que nous configurerons les dépôts.
Cette configuration comprend un fichier et un dossier :
- conf/gitolite.conf : fichier de configuration de Gitolite, contenant les dépôts, leurs utilisateurs/groupes et leurs droits associés.
- keydir/ : dossier contenant les clés publiques des utilisateurs, sous la forme username.pub.:
La configuration de Gitolite utilisant un dépôt Git spécifique, il sera nécessaire de commiter les changements effectués pour qu'ils prennent effet, c'est pour cela qu'il est nécessaire de se situer dans le dossier de configuration pour appliquer des changements.
Rendez-vous donc dans le dépôt gitolite-admin de votre utilisateur admin :
cd ~/gitolite-admin
Utilisation
Nous allons créer un dépôt, ou gitadmin aura les droits lecture/écriture, mais où un utilisateur gituser (utilisateur non lié au serveur), n'aura que le droit de lecture.
vi conf/gitolite.conf repo test RW+ = gitadmin R = gituser git add conf/gitolite.conf
Ensuite, on doit importer le clef publique de gituser (créé sur son poste), et la commiter.
vi keydir/gituser.pub git add keydir/gituser.pub git commit -m "add repo test and user gituser" git push
Le push permet de réellement mettre les modifications en production.
Ensuite, il nous reste à tester sur notre poste que tout va bien :
git clone git@localhost/test.git cd test touch README git add README git commit -m "readme file" git push => W access for test DENIED to gituser
On voit donc bien que gituser n'a pas le droit d'ecrire sur le dépôt.
Voilà, on a maintenant un serveur git disponible, sur lequel on peut gérer finement les droits d'accès.
Pour plus d'informations, je vous invite à vous rendre sur le site de gitolite.
Ma prochaine étape sera d'essayer de pousser plus loin la gestion des droits, notamment sur les branches.
Merci pour ce tuto.
RépondreSupprimerPetite remarque :
adduser --system --shell /bin/bash --pasword git --gecos 'git version control' --group --home /home/git git
me donne --pasword option inconnue.
adduser -v
adduser version 3.112+nmu2
Pourtant je tourne sous squeeze..
Il manque un s à password, mais visiblement l'argument ne marche pas meme avec 2 S. J'ai lancé la commande sans, et il suffit de lancer l'utilitaire passwd pour changer le mdp.
RépondreSupprimer