Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
gitolite [Le 23/11/2009, 23:50] v0n |
gitolite [Le 31/08/2022, 23:30] (Version actuelle) moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>serveur}} | ||
+ | ---- | ||
+ | |||
====== Gitolite ====== | ====== Gitolite ====== | ||
Ligne 27: | Ligne 30: | ||
Cette commande a pour effet d'ajouter votre clé au fichier ''~/.ssh/authorized_keys'' de **''git''**. | Cette commande a pour effet d'ajouter votre clé au fichier ''~/.ssh/authorized_keys'' de **''git''**. | ||
- | Gitolite nécéssite évidement Git. Si ce n'est pas fait, [[:tutoriel:comment_installer_un_paquet|installez donc le paquet]] [[apt://git-core|git-core]]. | + | Gitolite nécessite évidement Git. Si ce n'est pas fait, [[:tutoriel:comment_installer_un_paquet|installez donc le paquet]] [[apt>git-core|git-core]]. |
===== Installation ===== | ===== Installation ===== | ||
Ligne 35: | Ligne 37: | ||
Récupérez les sources de Gitolite sur Github, avec : | Récupérez les sources de Gitolite sur Github, avec : | ||
- | git clone git://github.com/sitaramc/gitolite.git | + | git clone https://github.com/sitaramc/gitolite.git |
Déplacez-vous dans le dossier des sources : | Déplacez-vous dans le dossier des sources : | ||
Ligne 44: | Ligne 46: | ||
src/gl-easy-install git localhost admin | src/gl-easy-install git localhost admin | ||
+ | |||
+ | <note important>La commande précédente n'est plus bonne avec la version actuelle du répertoire github. Les changements semble d'ailleurs assez important il n'est plus sur que cette page ne soit pas obsolète !</note> | ||
Cela signifie que vous lancez l'installation en utilisant **''git''** comme utilisateur contenant les dépôts Git, sur votre serveur (ici la machine sur laquelle vous êtes connectée, donc ''localhost'' représente **''server''**) et utilisez **''admin''** comme administrateur des dépôts. | Cela signifie que vous lancez l'installation en utilisant **''git''** comme utilisateur contenant les dépôts Git, sur votre serveur (ici la machine sur laquelle vous êtes connectée, donc ''localhost'' représente **''server''**) et utilisez **''admin''** comme administrateur des dépôts. | ||
- | Il vous sera demandé plusieurs choses au cours de l'exécution du script. Si vous n'êtes pas familié avec Git, utilisez les propositions par défaut. | + | Il vous sera demandé plusieurs choses au cours de l'exécution du script. Si vous n'êtes pas familier avec Git, utilisez les propositions par défaut. |
===== Configuration ===== | ===== Configuration ===== | ||
- | La configuration de Gitolite est simple. Elle crée un dépôt de configuration nommé ''gitolite-admin'' sur le serveur, et son clône dans le répertoire personnel de **''admin''**. C'est dans celui-ci que nous configurerons nos dépôts. cette configuration comprend un fichier et un dossier : | + | La configuration de Gitolite est simple. Un dépôt de configuration nommé ''gitolite-admin'' est créé sur le serveur, ainsi que son clône dans le répertoire personnel de **''admin''**. C'est dans celui-ci que nous configurerons nos 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 ; | * **''conf/gitolite.conf''** : fichier de configuration de Gitolite, contenant les dépôts, leurs utilisateurs/groupes et leurs droits associés ; | ||
Ligne 80: | Ligne 83: | ||
</code> | </code> | ||
- | Une fois votre fichier édité, sauvegardé puis //commitez// les changements : | + | Une fois votre fichier édité, sauvegardez puis //commitez// les changements : |
git add conf/gitolite.conf | git add conf/gitolite.conf | ||
Ligne 92: | Ligne 95: | ||
Pour ajouter un utilisateur, il suffit d'ajouter sa clé publique au dossier ''keydir/'' dans un fichier nommé ''username.pub''. | Pour ajouter un utilisateur, il suffit d'ajouter sa clé publique au dossier ''keydir/'' dans un fichier nommé ''username.pub''. | ||
- | Pour ajouter par exemple l'utilisateur ''user1'', [[:tutoriel:comment_editer_un_fichier|crééz le fichier]] ''keydir/user1.pub'' contenant sa clé publique. | + | Pour ajouter par exemple l'utilisateur ''user1'', [[:tutoriel:comment_editer_un_fichier|créez le fichier]] ''keydir/user1.pub'' contenant sa clé publique. |
<note> | <note> | ||
- | Cette clé publique est habituellement créée avec la commande ''ssh-keygen'' (executée depuis le poste de l'utilisateur à ajouter) et est contenue dans le fichier ''~/.ssh/id_rsa.pub'' de l'utilisateur. | + | Cette clé publique est habituellement créée avec la commande ''ssh-keygen'' (exécutée depuis le poste de l'utilisateur à ajouter) et est contenue dans le fichier ''~/.ssh/id_rsa.pub'' de l'utilisateur. |
</note> | </note> | ||
Ligne 119: | Ligne 122: | ||
<note> | <note> | ||
- | Le groupe ''@all'' est un groupe déjà définit, représentant tout le monde. | + | Le groupe ''@all'' est un groupe pré-définit, représentant tous les utilisateurs. |
</note> | </note> | ||
Ligne 134: | Ligne 137: | ||
git commit -m "add group group1 and assign it to repo my_repo" | git commit -m "add group group1 and assign it to repo my_repo" | ||
git push | git push | ||
- | |||
- | <note help> | ||
- | Pour une configuration plus poussée, comme les permissions sur les branches, Gitweb, etc, voir l'exemple de [[http://github.com/sitaramc/gitolite/blob/master/conf/example.conf|fichier de configuration]] de Gitolite. | ||
- | </note> | ||
==== Gestion des droits ==== | ==== Gestion des droits ==== | ||
Ligne 145: | Ligne 144: | ||
* **R** : droit de lecture uniquement (l'utilisateur peut effectuer un ''git clone'', etc) ; | * **R** : droit de lecture uniquement (l'utilisateur peut effectuer un ''git clone'', etc) ; | ||
* **RW** : droit de lecture et écriture (l'utilisateur peut effectuer un ''git clone'', ''git push'', etc) ; | * **RW** : droit de lecture et écriture (l'utilisateur peut effectuer un ''git clone'', ''git push'', etc) ; | ||
- | * **RW+** : droit de lecture et écriture, ainsi que les //rewind permissions//, c'est-à-dire le droit de supprimer des étapes du projet, comme par exemple le permet la commande ''git reset --hard HEAD^''. | + | * **RW+** : droit de lecture et écriture, ainsi que les //rewind permissions//, c'est-à-dire le droit de supprimer des étapes du projet, comme par exemple permettre la commande ''git reset --hard HEAD^''. |
+ | |||
+ | <note help> | ||
+ | Pour une configuration plus poussée, comme les permissions sur les branches, Gitweb, etc, voir le [[https://github.com/sitaramc/gitolite/blob/master/README.txt|README]] de Gitolite. | ||
+ | </note> | ||
+ | |||
+ | ==== Rendre un dépôt public ==== | ||
+ | |||
+ | Pour permettre à n'importe qui d'accéder en lecture à votre dépôt, il vous faudra installer le ''git daemon''. | ||
+ | |||
+ | [[:tutoriel:comment_installer_un_paquet|Installez donc le paquet]] [[apt://git-daemon-run|git-daemon-run]]. | ||
+ | |||
+ | Il faut indiquer au ''git daemon'' où sont situés les dépôts. Pour cela, [[:tutoriel:comment_editer_un_fichier|éditez votre fichier]] ''/etc/sv/git-daemon/run''. | ||
+ | |||
+ | Changez la ligne : | ||
+ | |||
+ | exec chpst -ugitdaemon git daemon --verbose --base-path=/var/cache /var/cache/git | ||
+ | |||
+ | par : | ||
+ | |||
+ | exec chpst -u git git daemon --verbose --base-path=/home/git/repositories | ||
+ | |||
+ | puis redémarrez le ''git daemon'' avec : | ||
+ | |||
+ | sudo /etc/init.d/git-daemon restart | ||
+ | |||
+ | Pour donner le droit de lecture au public pour un dépôt, il suffit d'attribuer le droit de lecture à l'utilisateur ''daemon'' pour ce dépôt. C'est-à-dire, ajouter la ligne : | ||
+ | |||
+ | R = daemon | ||
+ | |||
+ | à votre configuration, puis appliquer les changements, comme décrit dans la section [[#creer_un_depot|Configuration]]. | ||
+ | |||
+ | <note important> | ||
+ | Notez que ''git daemon'' écoute sur le port **9418**. Donc celui-ci devra être accessible depuis l'extérieur pour permettre au public d'accéder à vos dépots. | ||
+ | </note> | ||
+ | ==== Changer le masque des dépôts ==== | ||
+ | |||
+ | Il peut être utile de changer le masque des dépôts, c'est-à-dire attribuer des droits différents aux nouveaux dépôts. Par exemple, //Gitweb// ou [[:redmine|Redmine]] ont besoin de lire les dépôts pour les parcourir. Souvent, la plus propre méthode consistera à ajouter leur utilisateur au groupe //git// et ajouter le droit de lecture à ce groupe. | ||
+ | |||
+ | [[:tutoriel:comment_editer_un_fichier|Éditez le fichier]] **''/home/git/.gitolite.rc''** (sur **''server''**) pour y changer la valeur de la variable ''REPO_UMASK'' comme ceci (commentez la valeur actuelle et décommentez celle voulue) : | ||
+ | |||
+ | $REPO_UMASK = 0027; # gets you 'rwxr-x---' | ||
+ | |||
+ | Ce n'est pas tout. Cette modification affectera les nouveaux dépôts créés, pas ceux déjà existants. Pour attribuer les bonnes permissions sur un dépôt existant, procédez comme ceci (dans le cas ou nous voulons attribuer le droit de lecture au groupe) : | ||
+ | |||
+ | sudo chmod -R g+Xr /home/git/repositories/<mon_depot>.git/ | ||
+ | |||
+ | <note important> | ||
+ | Notez le **'X'** et non pas **'x'**, qui aura pour effet d'attribuer le droit d'exécution seulement sur un dossier, ou sur un fichier si celui-ci est déjà exécutable (par le propriétaire par exemple). | ||
+ | </note> | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
Ligne 151: | Ligne 199: | ||
==== Accès à un dépôt ==== | ==== Accès à un dépôt ==== | ||
- | Après avoir ajouter un utilisateur, celui-ci peut //cloner// un dépôt avec : | + | === Par un utilisateur === |
+ | |||
+ | Après avoir ajouté un utilisateur, celui-ci peut //cloner// un dépôt avec : | ||
git clone git@server:my_repo | git clone git@server:my_repo | ||
+ | |||
+ | === Par le public === | ||
+ | |||
+ | Si vous avez [[#rendre_un_depot_public|rendu un dépôt public]], n'importe qui pourra //cloner// ce dépôt avec : | ||
+ | |||
+ | git clone git://server/my_repo | ||
+ | |||
+ | === Par l'administrateur === | ||
+ | |||
+ | Dans le cas où l'utilisateur **''admin''** veut développer sur **''server''**, il doit //cloner// un dépôt avec : | ||
+ | |||
+ | git clone gitolite:my_repo | ||
<note> | <note> | ||
- | Si votre version de Git de **''server''** est ''1.6.0.*'', vous pourrez obtenir des erreurs au //clone// d'un dépôt **vide**. Pour contourner ce problème, vous pouvez mettre à jour votre la version de Git de **''server''**, ou contourner le problème chez le client en //clonant// le dépôt de cette manière : | + | Si votre version de Git de **''server''** est inférieure à ''1.6.2'', vous obtiendrez une erreur au //clone// d'un dépôt **vide**. Pour contourner ce problème, vous pouvez mettre à jour votre la version de Git de **''server''**, ou contourner le problème chez le client en //clonant// le dépôt de cette manière : |
mkdir repo1 | mkdir repo1 | ||
Ligne 167: | Ligne 229: | ||
</note> | </note> | ||
- | <note> | + | ===== Désinstallation ===== |
- | Dans le cas où l'utilisateur **''admin''** veut développer sur **''server''**, il doit //cloner// un dépôt avec : | + | |
- | git clone gitolite:my_repo | + | Pour désinstaller Gitolite, il faut supprimer des fichiers de **''server''** et **''admin''**. |
- | </note> | + | |
+ | Dossier à supprimer du dossier personnel de **''admin''** : | ||
+ | |||
+ | * ''~/gitolite-admin'' | ||
+ | |||
+ | Fichiers ou dossiers à supprimer du dossier personnel de **''git''** sur **''server''** : | ||
+ | |||
+ | * ''~/.gitolite'' | ||
+ | * ''~/.gitolite.rc'' | ||
+ | * ''~/gitolite-install'' | ||
+ | * ''~/repositories/gitolite-admin.git'' | ||
+ | |||
+ | Il ne reste plus qu'à supprimer les accès SSH des utilisateurs sur **''server''** : | ||
+ | |||
+ | dans le fichiers ''~/.ssh/authorized_keys'' de l'utilisateur **''git''**, supprimez les clés des utilisateurs, ou supprimez la partie ''"command=..."''. | ||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
- | * **(en)** [[http://github.com/sitaramc/gitolite|page de Gitolite]] sur Github ; | + | * **(en)** [[https://github.com/sitaramc/gitolite|page de Gitolite]] sur Github ; |
- | * **(en)** [[http://github.com/sitaramc/gitolite/blob/master/conf/example.conf|Un exemple de fichier de configuration complet]] ; | + | |
* **(fr)** documentation de [[:git|Git]] du wiki ; | * **(fr)** documentation de [[:git|Git]] du wiki ; | ||
Ligne 182: | Ligne 256: | ||
//Contributeurs : [[:utilisateurs/v0n]].// | //Contributeurs : [[:utilisateurs/v0n]].// | ||
- |