Disponible pour les systèmes d'exploitation Microsoft Windows, Mac OS X, et sur la plupart des systèmes d'exploitation du type Unix, Mercurial est écrit principalement en Python. Il a été créé pour s'utiliser via des lignes de commandes. Toutes les commandes commencent par « hg », en référence au symbole chimique du mercure. Ses principales caractéristiques sont, entre autres :
- sa rapidité et sa capacité à gérer les gros projets ;
- son utilisation sans nécessiter un serveur ;
- son fonctionnement complètement distribué ;
- sa robustesse dans la gestion des fichiers ASCII et binaires ;
- sa gestion avancée des branches et des fusions ;
- son interface web intégrée.
Comme Git et Monotone, Mercurial utilise une fonction de hachage SHA-1 pour identifier ses versions.
Mercurial utilise un protocole réseau basé sur HTTP.
Les principales commandes de Mercurial
add
Ajoute tout ou une partie des fichiers pour le prochain commit
annotate
Montre l'origine de chaque ligne distincte dans un fichier texte (auteur, date, révision...)
archive
Extrait une version sans les méta-données depuis le dépôt
clone
Fait une copie du dépôt d'un projet existant
commit (ci)
Enregistre une partie ou toutes les modifications locales dans le dépôt créant ainsi une nouvelle version
diff
Calcule la différence entre deux versions
export
Récupère les en-têtes et les différences pour une ou plusieurs versions
init
Créé un dépôt dans le répertoire donné en paramètre (répertoire courant sans paramètre)
log
Donne l'historique des versions d'un dépôt entier ou de fichiers donnés
manifest
Donne la liste des fichiers contenus dans une version donnée
merge
Fusionne le répertoire de travail avec une autre version
parents
Montre les parents de la version de travail en cours ou d'une version donnée
pull
Récupère les changements depuis un dépôt donné
push
Exporte les changements vers un dépôt donné
remove (rm)
Supprime tout ou une partie des fichiers pour le prochain commit
revert
Revient à une version donnée de fichiers ou de répertoires
serve
Rend visible le contenu du dépôt via HTTP
status (st)
Montre les fichiers qui ont subi des changements dans le répertoire de travail
strip
Efface une version ainsi que toutes les versions suivantes sur une branche donnée
tag
Associe un marqueur (une étiquette, un label) à une version donnée
tags
Liste tous les marqueurs d'un dépôt
update (up/checkout/co)
Met à jour ou fusionne le répertoire de travail
verify
Vérifie l'intégrité d'un dépôt