Mercurial

De Breizh-Entropy
Aller à la navigation Aller à la recherche


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