Mercurial es otro sistema de control de versiones distribuido (otro más) que no tiene nada que envidiar a git (en lo referente a prestaciones) pero tan fácil de usar como versión. Esta recetilla incluye unas nociones de su uso básico y algunas buenas referencias.
Al igual que git, mercurial está muy influenciado por las ideas de monotone, pero al contrario que git, la gente de mercurial ha hecho algo de esfuerzo por no complicar demasiado su uso. Es resultado es una mezcla de la facilidad de subversion con la potencia y posibilidades de git.
La siguiente figura es un esquema del funcionamiento de las órdenes más comunes:

Partiendo de un directorio (vacío o no):
juan@example:~/iexplorer9$ hg init
si quieres añadir al repo lo que hubiera en ese directorio:
juan@example:~/iexplorer9$ hg add
Mercurial dispone de los comandos habituales en un VCS tradicional:
Pero al ser mercurial un VCS distribuido, estas operaciones ocurren sobre un repositorio local. Para trabajar con un repositorio ajeno dispone de comandos similares a git:
merge?Puede que te resulte raro ver un mensaje como este al hacer una operación pull o update:
$ hg pull -u pulling from ssh://example.org//var/repo searching for changes adding changesets adding manifests adding file changes added 1 changesets with 2 changes to 2 files (+1 heads) not updating, since new heads added (run 'hg heads' to see heads, 'hg merge' to merge)
Si compartes el repositorio con otras personas (que para eso está) es muy habitual que te encuentres con que varias personas han hecho cambios a partir de la misma versión. Otros programas, como subversion, mezclan automáticamente estos cambios. Si eso afectaba a las mismas líneas de un fichero, subversion decía que había un «conflicto» y marcaba sobre el propio fichero la zona afectada.
En mercurial esto es ligeramente distinto. Cuando hay más de un cambio sobre la última versión, se dice que hay varias «cabezas» (que se pueden ver con hg heads). Esas cabezas se pueden mezclar en una sola con:
$ hg merge merging scripts/cv.py 3 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit)
Y tal como dice el aviso, debes hacer hg commit aunque lo hubieras hecho previamente, puesto que el merge cambia el contenido de los ficheros.
Mercurial soporta varios protocolos: ssh, http(s), inotify. El siguiente comando clona un repositorio accesible por SSH:
bill@deathstar:~$ hg clone ssh://billy@example.org//home/juan/iexplorer9 micopia
Necesitas crear un grupo UNIX y hacer que todos los usuarios que podrán utilizar el repositorio pertenezcan a dicho grupo.
# addgroup microchof # adduser billy microchof # adduser steve microchof
Luego crea un directorio e inicialízalo como repositorio mercurial:
# mkdir /var/hg/windows9 # cd /var/hg/windows9 # hg init
Después debes darle los permisos necesarios para que todos los usuarios del grupo puedan utilizarlo:
# chgrp -R microchof .hg # chmod -R g+w .hg # chmod -R g+s .hg
También es muy importante que el umask de los usuarios sea 002 o menos restrictivo. Puedes añadir la siguiente línea al /etc/profile:
umask 002