Mercurial
Préparation du serveur
Installation de base
apt-get install mercurial-server
Création d'un repository
root@server:~# mkdir /var/lib/mercurial-server/repos/projet root@server:~# cd /var/lib/mercurial-server/repos/projet root@server:/var/lib/mercurial-server/repos/projet# hg init root@server:/var/lib/mercurial-server/repos/projet# chown hg:hg .
Créations d'utilisateurs
Avec SSH
Ces utilisateurs devront avoir un compte shell (ou UNIX) sur votre machine. Vous pouvez bien sûr les chrooter grâce à /etc/security/limits.conf
Au final ce sera l'utilisateur hg qui va servir à tout pusher. Le serveur fera la distinction grâce aux clés RSA que vous lui fournirez dans /etc/mercurial-server/keys/{root,user}/login_client/host_client
.
Vous devez donc générer une clé SSH avec le protocole de signature/authentification RSA sur le client :
login_client@host_client:~$ ssh-keygen -t rsa
Puis l'ajouter dans le serveur :
login_client@host_client:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub serveur.tld
Ensuite vous devez dire à mercurial que cette clé peut être utilisée avec hg@. Il existe deux dossiers /etc/mercurial-server/keys/root/
et /etc/mercurial-server/keys/user/
en fonction des droits que vous voulez donner
root@server:~# mkdir -p /etc/mercurial-server/keys/{root,user}/login_client/host_client root@server:~# cp /home/login_serveur/.ssh/authorized_keys /etc/mercurial-server/keys/{root,user}/login_client/host_client root@server:~# chown hg -R /etc/mercurial-server/keys/ root@server:~# sudo -u hg /usr/share/mercurial-server/refresh-auth
Vous trouverez plus d'informations à propos de la gestion des utilisateurs sur http://dev.lshift.net/paul/mercurial-server/docbook.html
Avec HTTP(S)
Côté client
Initialisation
Il faut commencer par récupérer le dossier vide que nous venons de créer
login_client@host_client:~$ hg clone ssh://hg@server.tld/projet projet
Ajout de fichiers
Ensuite lorsque vous aurez créé des fichiers, il faudra les push
login_client@host_client:~/projet$ hg add fichier [fichier]
Si vous voulez vérifier où vous en êtes :
login_client@host_client:~/projet$ hg status
Puis vous devez tout envoyer en ligne :
login_client@host_client:~/projet$ hg commit -u user -m "Message expliquant les modifs" login_client@host_client:~/projet$ hg push