Présentation de Mercurial

Mercurial est un logiciel Gestionnaire de révisions de code source.

Il ressemble beaucoup à Git qui est le plus utilisé.

DCVS : voir WikiPedia

Dans l'invite de commande, toutes les commandes de Mercurial sont sous la forme : hg verbe paramètres

Pour information HG est le symbole de l'élément chimique appelé : Mercure.

Serveur de révision de la section SIO

192.168.104.246

Vous aurez un compte :

prenom.nom

jeanbart

Manipulations de base

Connectez vous, avec Putty, avec votre compte et l'adresse IP ci-dessus.

Créer un dépôt

La commande hg init

<spoiler>

hg init nomDuProjet

ou

mkdir nomDuProjet cd nomDuProjet hg init

</spoiler>

Explications

Le dépot contient deux éléments importants :

Le Répertoire de Travail (Working Directory) dans lequel le développeur édite son code. Le répertoire de travail contient le code et son contenu pourra être remplacé par une des révisions contenues dans le "store"

eleve1.sio2@srvr-revisions ~/depots_mercurial$ hg init depot1 eleve1.sio2@srvr-revisions ~/depots_mercurial$ ls depot1

Le "Store" : qui se trouve dans le dossier .hg créé par la commande hg init. C'est dans ce dossier que sera enregistré l'historique des différentes révisions du code écrit dans le Répertoire de Travail.

eleve1.sio2@srvr-revisions depots_mercurial$ cd depot1 eleve1.sio2@srvr-revisions depots_mercurial/depot1$ ls -al total 12 drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 . drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 .. drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 .hg

Un dépôt peut, aussi, être créé en "clonant" un dépôt existant : commande hg clone

Etat du dépôt

La commandehg status

<spoiler>hg status ou hg st</spoiler>

Ajout d'un fichier dans le dépôt

Il s'agit d'ajouter un fichier dans la liste des fichiers dont Mercurial va suivre les révisions

eleve1.sio2@srvr-revisions ~$ touch fic1.txt

<spoiler>hg add nomDuFichier</spoiler>

dans le Répertoire de travail

<spoiler>hg status</spoiler>

dans le "Store"

eleve1.sio2@srvr-revisions ~$ ls eleve1.sio2@srvr-revisions ~$ mkdir depots_mercurial eleve1.sio2@srvr-revisions ~$ cd depots_mercurial/ eleve1.sio2@srvr-revisions ~/depots_mercurial$ ls eleve1.sio2@srvr-revisions ~/depots_mercurial$ hg init depot1 eleve1.sio2@srvr-revisions ~/depots_mercurial$ ls depot1 eleve1.sio2@srvr-revisions ~/depots_mercurial$ cd depot1/ eleve1.sio2@srvr-revisions depots_mercurial/depot1$ ls eleve1.sio2@srvr-revisions depots_mercurial/depot1$ ls -al total 12 drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 . drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 .. drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 .hg eleve1.sio2@srvr-revisions depots_mercurial/depot1$ ls -al .hg total 20 drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 . drwxr-xr-x 3 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 .. -rw-r--r-- 1 eleve1.sio2 eleve1.sio2 57 Sep 20 06:12 00changelog.i -rw-r--r-- 1 eleve1.sio2 eleve1.sio2 23 Sep 20 06:12 requires drwxr-xr-x 2 eleve1.sio2 eleve1.sio2 4096 Sep 20 06:12 store eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg log eleve1.sio2@srvr-revisions depots_mercurial/depot1$ vi fic1.txt eleve1.sio2@srvr-revisions depots_mercurial/depot1$ ls fic1.txt eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status ? fic1.txt eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg add fic1.txt eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status A fic1.txt eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg log

Ajouter la révision dans le dépôt

eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg commit -u eleve1.sio1 -m "Creation du fichier fic1.txt" eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg log
changeset: 0:a656ee7b3969
tag: tip
user: eleve1.sio1
date: Fri Sep 20 06:31:59 2013 +0000
summary: Creation du fichier fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg diff

Modification du fichier

eleve1.sio2@srvr-revisions depots_mercurial/depot1$ vi fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status
M fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg log
changeset: 0:a656ee7b3969
tag: tip
user: eleve1.sio1
date: Fri Sep 20 06:31:59 2013 +0000
summary: Creation du fichier fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg commit -u eleve1.sio1 -m "Modification du fichier fic1.txt"
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg status
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg log
changeset: 1:8f292c6d6e53
tag: tip
user: eleve1.sio1
date: Fri Sep 20 06:43:12 2013 +0000
summary: Modification du fichier fic1.txt
changeset: 0:a656ee7b3969
user: eleve1.sio1
date: Fri Sep 20 06:31:59 2013 +0000
summary: Creation du fichier fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$ hg diff fic1.txt
eleve1.sio2@srvr-revisions depots_mercurial/depot1$

Cloner un dépôt