Mercurial es el sistema de control de versiones que elegí después de probarlo durante algunos días junto con Subversion y Git. La elección fue relativamente sencilla. Las características esenciales que me llevaron a decidirme por este CVS son:
– Facilidad de instalación. En comparación con Git, que requiere un mayor entendimiento de los entresijos internos del sistema tanto para su instalación como para su uso.
– Es un sistema distribuído, al igual que Git y a diferencia de Subversion, lo que elimina la necesidad de un repositorio centralizado. Puedes tener tantos repositorios de un mismo desarrollo como desees y abrir tantas ramas de desarrollo como se deseen.
– La interfaz y el trabajo día a día son bastante similares a los de Subversion, por lo que es bastante sencillo de utilizar, a diferencia de Git.
– Alto nivel de seguridad. Es posible configurarlo para conectarse a un repositorio a través de HTTP con una capa de seguridad por SSH con utilización de ficheros de claves privadas. La configuración de un repositorio Mercurial de estas características no es trivial, sin embargo es posible, cosa que no conseguí realizar con Subversion (aunque en teoría tamibén es posible).
En resumen, en mi opinión, tiene lo mejor de Git y de Subversion.
Trabajo con Mercurial
– No hay una manera «buena» de usarlo debido a que se trata de un sistema muy flexible, sin embargo algunos métodos son más escalables que otros.
– Es importante fusionar siempre (realizar la operación merge), ya que esto nos permitirá encontrarnos con los conflictos antes, y por lo tanto serán más fáciles de resolver.
– No se debe dudar en utilizar múltiples árboles localmente durante la labor de desarrollo. Mercurial permite estas operaciones de una manera rápida y eficiente.
– Algo falla?, vuelve para atrás tantos pasos como necesites en otra rama.
¿Qué añadiría yo a Mercurial?
Sería interesante que en versiones futuras de Mercurial se mejore el interfaz, así como la posibilidad de exportar los ficheros modificados de un changeset cualquiera (no sólo la lista de cambios del changeset). Si se añadiese esta capacidad pienso que sería el CVS ideal.