Bazaar, un control de versiones distribuido

Mi intención en el artículo de hoy es echar un vistazo al sistema de versiones Bazaar. Que, aunque no es tan popular como Git o SVN, todavía se utiliza bastante. Se trata de un sistema de control de versiones que tiene como fin ayudarnos a seguir el historial de un proyecto dado a lo largo del tiempo, además de facilitar el trabajo colaborativo con terceros. Tal y como indican en su web “si usted es un desarrollador individual, un equipo compartido o una comunidad de desarrolladores (..), Bazaar se escala y se adapta para satisfacer sus necesidades”

Sobre la idea de este artículo

Aprovechando que es verano y tengo la gran suerte de disfrutar de horario intensivo (tengo más tiempo disponible, hasta que tenga mis merecidas vacaciones, que por entonces no sabréis de mi hasta la vuelta de estas ? ) voy a dedicar una entrada al sistema de versiones Bazaar, al que todavía no había dedicado ni un solo minuto.

Un poco de información sobre el sistema de versiones Bazaar

Se trata de un sistema de control de versiones distribuido, diseñado para facilitar la contribución en proyectos de software libre y que sigan la filosofía de desarrollo de código abierto, patrocinado para la empresa que está detrás de Ubuntu, esto es Canonical.

Está escrito en el lenguaje de programación Python y es multiplataforma, ya que tiene versiones empaquetadas para la mayoría de las distribuciones tanto GNU/Linux, así como otras como Mac OS X o MS Windows. Es software libre, ya que utiliza una licencia GPLv2 y forma parte del proyecto GNU

La idea del nombre proviene del libro “La catedral y el bazar” en inglés “The Cathedral and the Bazaar

Principales ventajas

Si miramos la documentación oficial del proyecto, indican que Bazaar tienen diez razones principales para utilizarlo, que son:

– Control de versiones para todos
– Trabajar sin conexión
– Cualquier flujo de trabajo
– Soporte de plataforma cruzada
– Cambiar el nombre de seguimiento y fusión inteligente
– Alta eficiencia de almacenamiento y velocidad
– Cualquier modelo de espacio de trabajo
– Juega bien con todo
– Tiene una plataforma de lanzamiento
– Utiliza complementos (plugins) y “bzrlib”

Multitud de proyectos utilizan este sistema de control de versiones, entre los que se encuentran el propio Ubuntu, GNU Mailman, GNU Emacs, Midori, MySQL, Inkscape o Squid, todos ellos ubicados en plataformas como Launchpad.

Instalación de Bazaar en GNU/Linux

Esta parte es realmente sencilla, ya que los binarios de este sistema de control de versiones se encuentra en los repositorios de las principales distribuciones de nuestro queridos Ñu y Pingüino. Consultando su página de descargas, podemos dar fer de ello:

Menu install Bazaar

Ya sabéis que en mi portátil tengo instalado Fedora 28. Por lo que me decantaré por dicho binario:

  1. su -c 'yum install bzr'

Podéis encontrar las instrucciones para vuestra distribución en el enlace que os dejado antes.

Trabajando con Bazzaar

Primero de todo hay que tener en cuenta que este sistema de versionado registra los cambios en el código fuente del proyecto según la persona que los haga. Dicha persona se identifica con su nombre y dirección de correo electrónico. Por lo que, antes de comenzar, vamos a indicar al sistema quien somos.

En mi caso:

  1. bzr whoami "davidochobits <davidochobits@colaboratorio.net"

Y para comprobar que el sistema ha guardado la información de manera correcta:

  1. bzr whoami

Con el resultado:

Control version Bazaar in Fedora 28

Ahora vamos a crear un nuevo proyecto. Para ello vamos a crear un directorio de repositorios para así guardar todo nuestro trabajo, relacionado con dicho proyecto, donde, si existiesen, los desarrolladores de nuestro equipo, puedan crear las ramas de desarrollo.

  1. bzr init-repo ejemplo

Creamos la rama principal:

  1. bzr init ejemplo/trunk
  2. cd ejemplo/trunk

Aquí el resultado:

A continuación vamos a añadir unos ficheros al proyecto. Simplemente mediante «touch» creamos un fichero de prueba, con extensión txt.

  1. touch prueba-1.txt
  2. bzr add prueba-1.txt

Y realizamos nuestro primer «commit» :

  1. bzr commit -m "Fichero añadido al proyecto Ejemplo"

Con el resultado:

Continuemos. Ahora realizamos un cambio en el proyecto, concretamente en el fichero que recién hemos añadido.  Por lo que vamos añadir un cambio en el fichero:

  1. echo "En un lugar de la mancha..." > prueba-1.txt

Y añadimos el fichero modificado:

  1. bzr add prueba-1.txt

Utilizando el parámetro «diff», al igual que pasa a nivel de sistema operativo, veremos los cambios realizados en el fichero:

  1. bzr diff

Y por último, que no menos importante, realizamos un nuevo «commit»

  1. bzr commit -m "Añadimos una nuevo línea al fichero"

Veamos los pasos en una captura:

Veamos el log de todo lo que hemos hecho hasta ahora:

  1. bzr log

Que nos muestra:

Si lo deseamos podemos subir el proyecto a la plataforma «Launchpad» utilizando un nuevo usuario creado a tal efecto. Pero eso lo veremos en otro capítulo 🙂

Espero que el artículo os haya parecido interesante. Si estáis interesados en el control de versiones, en la web hemos hablado de:

Control de versiones con Subversion y USVN

Control de versiones con GitLab

Control de versiones distribuido con Mercurial

Control de versiones libre con GNU Savannah

¿Qué os ha parecido? ¿Tenéis experiencia con estas aplicaciones? ¿Cuál os parece mejor?

Nos vamos leyendo ^.^

Para el artículo únicamente he consultando la documentación oficial:

Bazaar in five minutes

Bazaar.canonical.com

Las capturas de pantalla son mías y las podéis utilizar sin problema, siempre citando la fuente.