Control de versiones distribuido con Mercurial
Hoy os hablaré de un programa de control de versiones distribuido llamado Mercurial, muy potente y que quizás para el gran público es poco conocido. Tiene muchos años a sus espaldas desde su creación, en 2005 y desde entonces no ha dejado de ganar usuarios.
Sobre Mercurial
Hace unos días en la web sobre desarrollo vardump.es explicaron la necesidad del control de versiones, algo bastante obvio, sin duda. Una vez aclarado éste punto, hablemos un poco sobre el producto. Antes de seguir también debo decir que conocí el producto del que hablaremos hoy a raíz del programa DTRX, que utiliza dicho control de versiones en su desarrollo.
Nació en 2005 de manos del desarrollador Mat Mackall, debido a la descontinuación como software gratuito de BitKeeper. El programa está escrito en Python y en C, y utiliza una licencia GPL v2, por lo que es considerado software libre. Está pensado para funcionar en GNU Linux principalmente, pero es multiplataforma, ya que se puede trabajar con él también en OSX o Microsoft Windows.
Desde su creación está enfocado para tener un gran rendimiento y escalabilidad, sin necesidad de un servidor central, por lo tanto, es distribuido. Con una gran capacidad avanzada de ramificación e integración. Aunque está pensado originalmente para la línea de comandos, lleva consigo una interfaz web gratuita.
Veamos sus características principales
- Distribuido. Es un control de versiones que no necesita un servidor central, a diferencia de otros sistemas como subversión.
- Rápido. Su implementación y la estructura de datos están diseñados para que el sistema sea rápido. Permite generar diferenciaciones entre revisiones, o volver atrás en el tiempo en cuestión de segundos. Según los creados del proyecto es perfectamente adecuado para grandes proyectos como OpenJKD o NetBeans.
- Multiplataforma. Al estar escrito en Python y en C permite estar disponible para la mayoría de sistemas.
- Extensible. Las funcionalidades del programa se pueden ampliar mediante extensiones, ya sea utilizando las oficiales o bien las escritas por terceros, todas ellas escritas en Python.
- Fácil. Mercurial está pensado para tener ser fácil de usar y que su curva de aprendizaje no sea muy alta. Por ejemplo, si usamos usuarios de Subversion (svn) encontraremos bastantes semejanzas en su uso. Siempre podemos consultar su guía rápida (en inglés)
- Open Source. El producto sigue la filosofía de desarrollo open source y es software libre, ya que utiliza la licencia GNU GPLv2.
Ahora veamos un poco su funcionamiento
Laboratorio de pruebas
Para probar el producto me he servidor de una máquina virtual con Devuan, de la que ya os hablé en su día. El primer paso es ver si el programa está disponible en los repositorios principales, para ello utilizaremos el programa aptitude.
apt update
aptitude search mercurial
Con el resultado que vemos en la imagen:
Para instalarlo sólo tenemos que escribir:
apt install mercurial
Si queremos tener la última versión, podemos realizar la instalación desde las fuentes, siguiendo la guía oficial, aquí.
Para trabajar utilizamore el comando hg, que es el símbolo de la tabla periódica del mercurio.
El primer paso para poder utilizar el programa es indicarle nuestro nombre de usuario. Para ello debemos crear un fichero ocultado en nuestra home llamado .hgrc
nano /home/davidochobits/.hgrc
En mi caso:
Para empezar a trabajar vamos a crear un directorio en /home/davidochobits/ llamado «pruebashg» y lo añadiremos al control de versiones utilizando el comando hg.
De ésta manera hemos indicado que trabajaremos con el control de versiones en el directorio.
Vamos a crear un fichero y añadirlo:
touch hola.txt
hg add hola.txt
Y le añadimos un comentario:
hg -m commit "primera versión hola.txt"
Aquí vemos una imagen de los últimos comandos:
Para ver los cambios usaremos el comando y parámetros ‘hg log‘
Hasta ahora hemos visto la parte introductoria, si queréis saber más podéis consultar la guía de inicio (en inglés) o el excelente libro (en inglés)
Espero que os haya parecido insteresante, no olvidéis comentar y compartir en vuestras redes sociales.
Nos leemos en la próxima ^.^