Ce billet décrit une procédure d’installation d’un serveur Gitolite sur un serveur Debian 6 fraîchement installé.
Nous utiliserons également Eclipse et son plugin EGit pour une utilisation de Git en tant qu’utilisateur « client » : récupération des sources, paramétrage des dépôts…
Sources d’inspirations principales pour cet article
BigFastBlog.com | Génération des clés |
Gitolite.com basic-admin | Adding / Removing Users |
Stackoverflow.com | Multiple keys in EGit |
Gitolite.com concepts | Concept général de Gitolite |
sheevaboite.fr | Installer un serveur GIT auto hébergé |
README.txt | Installation de gitolite sur le site d’Ubuntu et le fichier README.txt très bien écrit (une fois les sources de Gitolite récupérées) |
Autres sources | |
---|---|
github.com | Aide utilisateur |
pcottle.github.com | Tutoriel GIT |
soat.fr ([Devoxx FR 2013]) | Fast Forward : Comment migrer un gros projet de svn à git |
Test Redim :
Création de l’utilisateur « hôte » de Gitolite
Sur le serveur Debian, nous allons créer un nouvel utilisateur dédié à Git / Gitolite.
su - # On peut tester avec l'option --disabled-password aussi pour n'autoriser qu'une identification en SSH adduser --system --shell /bin/bash --group --home /var/git git passwd git exit
Installation de Git
su - # Config des proxy apt dans /etc/apt/apt.conf si nécessaire # Acquire::http::Proxy "http://myproxy.com:8888"; # Acquire::https::Proxy "http://myproxy.com:8888"; apt-get update apt-get upgrade apt-get install git
Création des utilisateurs Gitolite
Ce sont des certificats SSH qui seront introduits dans l’installation de Gitolite. Générons donc ces certificats. Un pour le compte d’administration (admin) et un pour un compte standard (olivier).
La clé admin.pub
devra se trouver dans /tmp/admin.pub
.
Les 4 fichiers clés (publiques et privées) dans le dossier ~/.ssh/
de la machine cliente (selon les droits désirés : admin et/ou user) (Exemple C:\Users\
)
Par Linux
su git ssh-keygen -t rsa -f admin ssh-keygen -t rsa -f olivier
Par Eclipse
# Preferences > General > Network Connection > SSH2 > General > Key Mgmt : # Generate RSA Key + Save Private Key
Installation de Gitolite
su git # Config initiale du proxy si besoin # git config --global http.proxy http://myproxy.com:8888 # git config --global https.proxy http://myproxy.com:8888 cd /tmp git clone http://github.com/sitaramc/gitolite mkdir -p var/git/bin /tmp/gitolite/install -to /var/git/bin /var/git/bin/gitolite setup -pk /tmp/admin.pub
A la fin de l’installation votre dossier /var/git doit ressembler à ceci :
EGit : Paramétrage des utilisateurs
Configuration du proxy si nécessaire
Dans Preferences > General > Network Connection > Proxy bybass
, ajouter l’IP de votre serveur si besoin, et vérifier l’adresse de votre proxy dans Proxy Entries :
Création du fichier ssh config
Il nous permettra de pouvoir utiliser plusieurs clés en fonction des projets (admin pour l’administration de gitolite, user pour les projets utilisateurs)
**NB :** Eclipse ne supporte pas le paramétrage de plusieurs clés privées simultanées (Preferences > SSH2 > Private keys)
Créer le fichier ~/.ssh/config (Exemple C:\Users\
Host gitAdmin Hostname x.x.x.x IdentityFile ~/.ssh/admin.priv User git Host gitOlivier Hostname x.x.x.x IdentityFile ~/.ssh/olivier.priv User git
Aperçu de votre dossier .ssh et du fichier config :
Administration de Gitolite
Import du projet gitolite-admin
Importer le projet d’administration des dépôts dans Eclipse depuis File > Import > Projects from Git > Clone URI
:
URI : ssh://git@gitAdmin/gitolite-admin.git (Import as General Project)
Modifions le dépôt existant « testing »
Nous allons attribuer le projet testing
pour l’utilisateur olivier uniquement :
gitolite-admin/conf/gitolite.conf : repo testing : RW+ = olivier + gitolite-admin/keydir/olivier.pub Add To Index + Commit & push
Importer le projet testing
Dans Eclipse, Fichier > Importer > Git
:
URI : ssh://git@gitOlivier/testing.git
Conclusion
N’hésitez pas à lire en détail le fichier /tmp/gitolite/README
pour en apprendre plus sur la manière de configurer les dépôts Git dans le fichier gitolite.conf
.
Un exemple de configuration
repo foo RW+ = alice - master = bob - refs/tags/v[0-9] = bob RW = bob RW refs/tags/v[0-9] = carol R = dave
- clone et fetch sont accessible à tout utilisateur disposant au moins d’un droit ‘R’ (R, RW, RW+)
- push : git parcourt l’ensemble des règles paramétrées et lorsqu’il trouve une règle compatible avec le nom du dépôt, du filtre (refex), et des permissions. Si la permission trouvée est ‘-‘, le push est interdit. Sinon elle est autorisée. Si aucune règle n’a été trouvée, le push est interdit.
- Le refex est une expression régulière, optionnelle, permettant de cibler le référentiel (tag, version). Il est toujours préfixé de ‘refs/’ (implicitement si non explicite).
- RW correspond à fast-forward push ou create
- RW+ autorise tout type de push quelle que soit la branche ou le tag. rewind autorisé
- Alice a accès à tout
- Bob a accès aux versions non taguées
master***
et peut créer des tags s’ils ne commencent pas par v + un chiffre. - Carol peut créer des tags qui commencent par v+ chiffre
- Dave peut simplement cloner ou fetcher.
La notion de groupe
On définit un groupe de cette façon (au début du fichier conf) :
@staff = alice carol bob @interns = ashok
Il est possible de créer des groupes de groupes (@wholeTeam = @staff @interns
)
Mise en pratique dans la définition des règles :
repo foo RW = @staff repo bar RW+ = @staff RW = @interns
Quelques commandes d’aide pour aller plus loin
Pour connaître l’ensemble des dépôts accessibles, la version de gitolite, etc.
ssh git@host info
Pour avoir l’aide sur l’utilisation de gitolite
ssh git@host help
Pingback: Git – De l’installation à l’utilisation dans Eclipse | Epic Coffee Mix'