Aller au menu - Aller au contenu

Héberger des dépôts Git avec gitosis


Informations sur le tutoriel

Avatar
Auteur : toki pona
Difficulté : Facile
Visualisations : 6 273
Licence : Creative Commons BY-NC-SA


Plus d'informations Plus d'informations

Historique des mises à jour

  • Le 14/11/2009 à 23:22:53
    Hébergez vos dépôts git !
Bonjour !
Dans ce tutoriel, je vous propose d'apprendre à mettre en place un hébergement de dépôts Git sur votre serveur GNU/Linux avec l'outil gitosis.

Je souhaite remercier bougie pour son aide.

Git, qu'est-ce donc ?!

Si vous ne connaissez pas Git, on est bien d'accord qu'il ne sert à rien d'héberger des dépôts, non ? :-°
Dans cette partie, je vais vous présenter l'outil lui-même, puis des alternatives.

Git, kézako ?


Image utilisateur

Git est un gestionnaire de versions décentralisé, puissant et libre créé par Linus Torvalds, créateur du noyau Linux.
Mais c'est quoi, un gestionnaire de versions ?!
Pour cela, je vous renvoie à Wikipédia qui produira une explication plus claire que la mienne :
Citation : Wikipédia (fr)
Un logiciel de gestion de versions agit sur une arborescence de fichiers afin de conserver toutes les versions des fichiers, ainsi que les différences entre les fichiers.
Ce système permet par exemple de mutualiser un développement. Un groupe de développeurs autour d'un même développement se servira de l'outil pour stocker toute évolution du code source. Le système gère les mises à jour des sources pour chaque développeur, conserve une trace de chaque changement. Ceux-ci sont, en bonne utilisation, chaque fois accompagnés d'un commentaire. Le système travaille par fusion de copies locale et distante, et non par écrasement de la version distante par la version locale. Ainsi, deux développeurs travaillant de concert sur une même source, les changements du premier à soumettre son travail ne seront pas perdus lorsque le second, qui a donc travaillé sur une version non encore modifiée par le premier, renvoie ses modifications.


Pour résumer, c'est un système permettant de travailler par versions d'un même projet, et ainsi conserver toutes les modifications apportées aux fichiers entre les versions.
C'est vraiment pratique pour travailler à plusieurs.

Mais de ces gestionnaires de versions, il en existe plusieurs.
Je vais donc vous présenter quelques alternatives célèbres.

Git, seul au monde ? Non !



Subversion


Image utilisateur

Une des alternatives parmi les plus connues est bien sûr Subversion (abrégé en SVN).
C'est aussi un gestionnaire de dépôts, mais lui est centralisé.
Voici une liste de liens où vous pourrez apprendre à utiliser cet outil :


Mercurial


Image utilisateur

Un autre gestionnaire, bien que moins connu, puissant, décentralisé, et ressemblant fortement à Git sur la syntaxe des commandes (il a d'ailleurs été publié pour la première fois quelques jours après le début du développement de Git ;) ), voilà ce qu'est Mercurial. :D
Pour apprendre, je n'ai pas pu trouver beaucoup de liens comme pour SVN, mais il reste toujours Wikipédia pour avoir une liste des commandes : Mercurial sur Wikipédia (fr).

Petit mot avant de commencer


Ce tutoriel ne portant pas sur Git mais sur l'hébergement de dépôts, je ne peux pas tout expliquer sur ce dernier.
Pour suivre ce tutoriel il est donc nécessaire de savoir récupérer un dépôt et le commiter/pusher.
Si vous ne savez pas faire cela, j'ai justement un lien pour vous ! :p
Voici donc : http://alexgirard.com/git-book/.
Il s'agit en fait du Git Community Book, traduit de l'anglais (ici) au français.

Installation de gitosis

Vous êtes décidés à faire votre dépôt personnel ? Alors allons-y, installons gitosis !

Pour les utilisateurs d'ArchLinux, il suffira d'installer le paquet aur/gitosis-git avec yaourt, qui fait automatiquement ce qui va suivre. Vous pouvez donc passer directement à la partie suivante.

Pour commencer, il va falloir récupérer les sources dans le dépôt Git de gitosis (comment ça, c'est un comble ? :D ) :
Code : Console
git clone git://eagain.net/gitosis.git


Quand vous aurez la copie du dépôt en local (c'est-à-dire que la commande a fini son exécution sans afficher d'erreur), vous pouvez utiliser le script python d'installation de cette façon :
Code : Console
cd gitosis
python setup.py install

En cas d'erreur, veuillez vous reporter à la FAQ en partie annexe.

Configuration de gitosis

Tout d'abord, il va falloir créer un utilisateur nommé « git ».
Il aura le plein pouvoir sur les dépôts, les ayant dans son répertoire home.
Pour ce faire, nous allons utiliser la commande useradd :
Code : Console
# useradd -G git -d /home/git -s /bin/bash -m git


Ensuite, nous allons récupérer la clé SSH publique, et la mettre dans un fichier temporaire tel que « /tmp/cle.pub ».
Nous allons ensuite, en tant que root, exécuter ces commandes :
Code : Console
sudo -H -u git gitosis-init < /tmp/cle.pub


La commande sudo, comme vous le savez, nous permet d'exécuter une action sous une autre identité, qui est par défaut root.
Dans ce cas, nous allons exécuter en tant que git, mais en plus, nous allons exécuter dans le home de ce dernier.
La commande gitosis-init va initialiser le dépôt en ajoutant l'utilisateur de la clé publique comme commiter du dépôt contenant la configuration.

En cas de succès, vous devriez obtenir un résultat comme celui-ci :
Code : Console
Initialized empty Git repository in ./
Initialized empty Git repository in ./

(Oui, deux fois !)

Et si vous affichez le contenu du home de git, comme par magie, il y a tout plein de fichiers ! :D

Maintenant, nous allons changer les droits d'un fichier.
J'ai en effet quelquefois remarqué qu'il ne se modifiait pas à cause de problèmes de droits.
Pour ce faire, nous allons exécuter cette commande :
Code : Console
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update


Ceci étant fait, j'ai l'honneur de vous annoncer que votre serveur Git est prêt à l'emploi, et qu'il ne reste plus qu'à faire vos dépôts et ajouter vos utilisateurs ! :D

Désormais, toute la configuration se fera sur votre ordinateur, via le dépôt que nous allons importer tout de suite :
Code : Console
git clone git@[adresse du serveur]:gitosis-admin.git
cd gitosis-admin.git


Si nous affichons le contenu du dépôt, nous verrons un fichier et un répertoire :
  • gitosis.conf : il contient tout ce qui concerne les droits des utilisateurs (les dépôts auxquels ils peuvent accéder) ;
  • keydir/ : répertoire comptant toutes les clés publiques de vos utilisateurs. La partie précédant l'extension dans le nom du fichier sera le nom d'utilisateur utilisé dans le fichier de configuration.

Ajouter un utilisateur

Pour créer un utilisateur, il vous faut acquérir une clé publique SSH, que vous enregistrerez dans le dossier keydir/ du dépôt gitosis-admin, sous le nom de « [pseudo].pub ».
Ensuite, vous pourrez modifier le fichier de configuration pour ajouter le membre dans un dépôt, en ajoutant la partie [pseudo] dans une des lignes « members ».

Il vous faudra ensuite faire un commit du dépôt pour que vos modifications soient prises en compte.
Il faudra faire un git add des fichiers ajoutés/modifiés, puis commiter :
Code : Console
git commit -a -m "Ajout de l'utilisateur [foo]"
git push

Ajouter un dépôt

Maintenant, la chose la plus utile de tout ce que l'on a fait dans le tutoriel : ajouter un dépôt ! :-°
Pour ce faire, il faut modifier le fichier de configuration en ajoutant un bloc ressemblant à celui-là :
Code : Console
[repo projet]
description = Mon projet
owner = Mon Nom


Pour ajouter des utilisateurs dans la modification du dépôt, il faut soit créer un nouveau groupe, soit ajouter le dépôt au droit d'écriture d'un groupe déjà existant.

Créer un groupe d'utilisateurs


La syntaxe est simple :
Code : Console
[group nom]
writable=
members=

nom est le nom du groupe.
writable est la liste des dépôts que peuvent modifier les membres du groupe.
members est la liste des membres du groupe.

Pour ajouter un dépôt/membre dans un groupe, il suffit d'ajouter son nom à la liste en séparant chaque dépôt/membre par un espace.

Et voilà, c'est fini ! Bon gitage ! ( :-° )
TokiPona

Informations sur le tutoriel

Retour en haut Retour en haut

Créé : Le 08/11/2009 à 02:35:01
Modifié : Le 14/11/2009 à 23:22:51
Avancement : 100%

13 commentaires