ou comment j’ai déployé git avec mes ouatmille machines pour travailler tout seul sur mes projets.
Principe de fonctionnement
Vu que je suis le seul développeur, je vais à la fois être le développeur et l’intégrateur. Alors, on ne va pas s’embêter : un dépôt accessible en lecture écriture sur le serveur, et une foultitude de comptes autorisés.
Configuration du serveur
Comme l’explique très bien la documentation de git, deux protocoles de communication sont utilisés :
- le protocole git:// pour les accès en lecture ;
- le protocole ssh:// pour les accès en écriture.
La machine hôte de votre projet doit donc activer ces services, et autoriser les connections idoines. Ce qui revient à :
- pour git:// : installer le paquet git-daemon, ouvrir le port 9418 et activer les services git et inetd dont il dépend ;
- pour ssh:// : installer le paquet openssh-server, ouvrir le port 22 et activer le service sshd.
On va aussi créer un pseudo-utilisateur, qui hébergera les dépôts git sur son compte, qui, par un heureux hasard totalement fortuit, sera également le répertoire système tel que configuré dans /etc/xinet.d/git
# useradd -d /var/lib/git -N -M -s /usr/bin/git-shell git # mkdir /var/lib/git/.ssh # chown -R git /var/lib/git
Identification des participants
Chaque machine depuis laquelle je compte éditer le projet doit être identifiée (c’est surtout valable pour les accès en écriture). Le livre « Pro git » explique très bien comment générer une clef pour chaque participant.
host$ ssh-keygen host$ scp ~/.ssh/id_rsa.pub server:/tmp/host.id_rsa.pub server# cat /tmp/host.id_rsa.pub >> /var/lib/git/.ssh/authorized_keys
Initialisation du dépôt
Créons donc un projet, à partir de rien.
cd /var/lib/git git init --bare MonProjet.git
Visibilité du dépôt
Le projet est donc accessible via deux URL :
- git://server/MonProjet.git pour les accès publics en lecture uniquement (via git clone);
- git@server:~/MonProjet.git pour les accès privés en lecture (toujours via git clone) et en écriture (via git push).