Pour pouvoir travailler à plusieurs sur un projet, ou même tout seul, mais avec un gestionnaire de version et pas un Dropbox inutile, je me suis penché sur l’installation d’un serveur Git, associé à Gitolite pour la gestion des utilisateurs.
Alors, pourquoi se faire son propre serveur, quel intérêt? Bien sûr, Github nous propose déjà ses services, mais pour héberger ses projets persos, pas encore près pour Github car trop jeune, ou ses projets d’école, rien de tel que son installation à soi. Rajoutons à cela la satisfaction d’héberger les données sur son propre serveur, en sachant que nous les contrôlons.
Trêve de bavardage, on va tout d’abord générer une clé rsa avec:
ssh-keygen -t rsa
Donner à la clé votre nom d’utilisateur.
On envoie la clé sur le serveur:
scp ~/.ssh/id_rsa.pub user@serveur.exemple.org:/tmp/user.pub
On se connecte au serveur via ssh et on obtient les droits root:
ssh user@serveur.exemple.org
sudo su –
On commence par installer tous les paquets nécessaires:
aptitude install git-all perl openssh-server gitolite
On ajoute un utilisateur gitolite avec:
adduser gitolite
On passe à l’utilisateur gitolite:
su – gitolite
Et on exécute le script d’installation de Gitolite:
gl-setup /tmp/user.pub
Retour sur le poste client.
On va récupérer le dépot gitolite-admin qui va nous permettre de donner des droits et d’ajouter des utilisateurs via Git:
git clone gitolite@serveur.exemple.org:gitolite-admin
A ce stade, si un message vous indique que le dépot n’est pas valable, une opération s’impose pour forcer l’utilisation de la clé précédemment générée lors de la connexion.
Dans le fichier .ssh/config sur le poste client:
Host gitolite
User gitolite
HostName 37.26.241.58
IdentityFile ~/.ssh/user
IdentitiesOnly yes
Cela devrait régler le problème, sinon une recherche sur le net s’impose.
On se place dans le dossier:
cd gitolite-admin
On édite le fichier de conf pour ajouter un dépot, par exemple test:
vim conf/gitolite.conf
repo test
RW+ = user
On commit:
git commit -a -m « Add test repository »
On peut ensuite cloner le dépôt test:
git clone gitolite@serveur.exemple.org:test
Ajouter un readme à celui-ci:
echo « Test Repo » > README
Faire un commit:
git commit -a -m « Initial commit »
Et faire le premier push:
git push origin master
Voilà, à ce stade, le serveur Git fonctionne parfaitement et je suis en mesure de créer des dépôts, ajouter des utilisateurs, faire des commits, des push, des pull, etc…
Une seule contrainte, paramétrer les clefs sur chacun des postes de développement.
Autre point à éclaircir, le paramétrage des clefs sous Windows (Beurk), pour ceux qui développent sur cette plateforme avec des outils propres à cet OS (Dev Ps Vita).
Prochaines étapes donc: documenter ce point pour les éventuels utilisateurs et étudier l’installation du Etherpad-Lite modifié de Framasoft pour compléter les outils disponibles.
Et bien sûr, proposer ces outils aux amis et connaissances ;).
J’allais oublier les liens qui peuvent servir:
Gitolite sur Github
Gitolite dans la doc Ubuntu
Concernant le problème de dépôts/clefs:
http://serverfault.com/questions/270688/gitolite-clone-not-working-as-intended
http://www.dotkam.com/2010/08/22/gitolite-does-not-appear-to-be-a-git-repository/