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$