Gitosis

Un article de WindowsLinux.net - Astuces pour Windows et Linux !.

La configuration des dépôts est définis dans un dépôt spécifique : gitosis-admin.git, qui contiens un fichier de configuration unique et un répertoire des clés SSH des utilisateurs.


Gitosis permet de faire de nombreuses choses avec son script de post-update dans le dépôt gitosis-admin. Vous pouvez par exemple, à chaque modification dans un dépôt spécifique, mettre à jour tout paramètre, fichiers, etc... sur le serveur afin de correspondre à la nouvelle configuration.


Sommaire

Adresses pour cloner et mettre à jour

Selon votre configuration et votre installation, vous pouvez avoir une adresse de mise à jour du type :

<utilisateur>@domaine.tld:<dépôt>.git

Et une adresse d'accès publique tu type :

git://domaine.tld/<dépôt>.git

Aspect du dépôt gitosis-admin

Le dépôt gitosis-admin.git a une structure spéciale pour les informations qu'il contient. Il ressemble à ceci :

 gitosis-admin/
     gitosis.conf
     keydir/
         <nom-utilisateur>.pub
         ....

Le fichier gitosis.conf contiens des informations de configuration pour tous les dépôts, y compris le dépôt gitosis-admin. Ce fichier définit les dépôts et les groupes d'utilisateurs, associés à des privilèges d'écriture/lecture.

Puisque GIT/Gitosis dépend d'un accès SSH aux utilisateurs pour déposer leurs modifications, ces utilisateurs sont identifiés par leurs clés SSH publiques. Le répertoire keydir/ contiens toutes les clés publiques des utilisateurs utilisateurs, dans le format <nom d'utilisateur>.pub.

Gestion d'un dépôt

Ceci est applicable si vous avez l'accès d'administrateur à Gitosis, sur le serveur.

Processus général

Effectuez un clonage du dépôt gitosis-admin. Cette opération peut être effectuée qu'une fois, toutes les modifications futures du dépôt gitosis-admin pourrons se baser sur ce clone.

$ git clone git@domaine.tld:gitosis-admin.git

Maintenant, pour toute modification, effectuez un commit, en poussant les modifications sur le serveur.

$ git commit -a -m "<Raison de la modification>"
$ git push

Ainsi Gitosis va mettre à jour tous les dépôts de manière appropriée.

Ajouter un nouveau dépôt

Créons un dépôt nommé myplugin, en donnant le droit d'écriture au propriétaire jsmith et aux groupe de développeurs core. Il faut donc remplacer les informations appropriées pour ce dépôt.

Par défaut, tous les nouveaux dépôts sont privés, cela signifie que seulement les utilisateurs qui ont les droits spécifiés par Gitosis seront capables d'interagir avec.

Plaçons nous dans gitosis-admin :

$ cd gitosis-admin

Editons gitosis.conf et ajoutons une section à la fin du fichier avec ces informations :

[repo myplugin]
description = Un plugin crée par moi.
owner = John Smith

[group myplugin]
writable = myplugin
members = jsmith @core

Attention : le dépôt et le nom du groupe du dépôt utilisent le même nom, ce qui peut étonner lors de la lecture du fichier. Le groupe core est précédé d'un @ dans l'assignement de la partie [group].


Si l'utilisateur jsmith n'a pas été ajouté précédemment dans Gitosis, ajoutez sa clé SSH publique dans le fichier approprié :

$ cat > keydir/jsmith.pub

Maintenant il faut ajouter et faire un commit des changements du dépôt, et envoyer ces informations au serveur :

$ git add gitosis.conf keydir/jsmith.pub
$ git commit -m "Added 'myplugin' repository and 'jsmith' user."

$ git pull --rebase    # être certain d'avoir les dernières mises à jours du serveur.
$ git push

Le nouveau dépôt est maintenant configuré via Gitosis. Il est possible que vous rencontriez une erreur vous déclarant que le dépôt n'existe pas. L'étape suivante est de faire un push d'un git checkout/clone à la nouvelle adresse du dépôt :

$ cd /path/to/myplugin
$ git remote rm origin
$ git remote add origin git@mamachine.com:myplugin.git
$ git push origin master

Rendre un dépôt public

But : permettre le dépôt myplugin d'être disponible sans connexion, et visible par internet via gitweb.


Il faut mettre les bonnes permissions au dépôt directement, afin de permettre aux utilisateurs de lire et exécuter sur le dépôt :

# sudo chmod 755 ~git/repositories/myplugin.git

Ensuite il faut faire un lien symbolique vers le dépôt depuis un lieu ou git-daemon et gitweb observent :

# sudo ln -s ~git/repositories/myplugin.git /var/cache/git/

Théoriquement, vous pouvez maintenant voir votre dépôt avec gitweb à une adresse du type http://git.votremachine.com/?p=myplugin.git, et les utilisateurs peuvent cloner ce dépôt depuis l'adresse : git://votremachine.com/myplugin.git


Souvenez vous : git:// ne permet qu'un accès en lecture au dépôt. Les développeurs doivent effectuer leur clone depuis git@mamachine.com:myplugin.git afin de pouvoir effectuer des modifications sur le serveur.

Liens

Externes

D'autres informations sont disponibles ici : http://www.mantisbt.org/wiki/doku.php/mantisbt:gitosis_management#adding_a_new_repository

Internes

Voir les commandes GIT sur cette page.