# Mercurial

* Per a altres significats, vegeu «Mercurial (planta)».
Mercurial és un sistema de control de versions, que es caracteritza per portar la gestió de versions de forma descentralitzada. Es troba disponible a gran nombre de plataformes, com ara les UNIX com Linux, Windows i Mac OS X.
Està escrit principalment amb Python i fou creat per a ser emprat des de la línia d'ordres. Les aplicacions tenen noms que comencen amb hg, en referència al símbol químic del mercuri. Les seues principals característiques són, entre d'altres:
* La seua rapidesa i capacitat d'adaptar-se a grans projectes
* El seu ús permet no deprendre d'un servidor
* El seu funcionament és completament distribuït
* És robust tant en la gestió de fitxers ASCII com amb binaris
* Té una gestió avançada de les branques i de les fusions
* Té integrada una interfície web
Com altre programari, com el Git o el Monotone, utilitza una funció de resum SHA-1 per a identificar les versions. El seu protocol de xarxa es basa en HTTP.
El creador i principal desenvolupador és en Matt Mackall, que va posar a disposició de la comunitat el programa el 19 d'abril del 2005, pocs dies després que comencés el desenvolupament del Git. Es tracta de programari lliure sota una llicència lliure GNU GPL.
Actualment utilitzen aquest sistema gran nombre de projectes de codi obert a la xarxa, com ara MoinMon, Mozilla o OpenSolaris.

## Ordres principals del Mercurial

| Ordre | Acció |
| add | S'afegeix tots o una part dels fitxers en una propera confirmació de canvis (commit) |
| annotate | Es mostra l'origen de cada línia diferent en un fitxer de text (autor, data, revisió...) |
| archive | S'extreu unes versions sense les metadades d'un repositori |
| clone | Es fa una còpia d'un repositori d'un projecte existent |
| commit (ci) | Es confirma i enregistra una part o totes les modificacions locals en un repositori creant-se així una nova versió |
| diff | Es calcula la diferència entre dues versions |
| export | Es recuperen les capçaleres i les diferències d'una o diferents versions |
| init | Es crea un repositori dins el directori donat com a paràmetre (l'actual si no s'especifica cap paràmetre) |
| log | Es retorna l'historial de les versions d'un repositori sencer o d'uns fitxers donats |
| manifest | Es retorna la llista dels fitxers continguts en una versió determinada |
| merge | Es fusiona el directori de treball amb una altra versió |
| parents | Es mostra els pares d'una versió de treball actual o d'una versió donada |
| pull | Es recuperen els canvis d'un repositori donat |
| push | S'exporten els canvis d'un repositori donat |
| remove (rm) | Se suprimeixen tots o una part dels fitxers en una propera confirmació de canvis (commit) |
| revert | Es reverteix a una versió donada de fitxers o de directoris |
| serve | Es fa visible el contingut d'un repositori gràcies a l'HTTP |
| status (st) | Es mostren els fitxers que han patit canvis en el directori de treball respecte al repositori |
| strip | S'esborra una versió i totes les següents d'una branca donada |
| tag | S'associa una etiqueta amb una versió donada |
| tags | Es llisten totes les etiquetes d'un repositori |
| update (up/checkout/co) | S'actualitza o es fusiona el directori de treball |
| verify | Es verifica la integritat d'un repositori |

## Enllaços externs

* Wiki del projecte
* Google TechTalk sobre Mercurial Arxivat 2010-04-06 a Wayback Machine. (anglès)
* Comparativa de diferents sistemes de control de versions Arxivat 2013-06-03 a Wayback Machine. (anglès)