Cómo usar bzr (bazaar el sistema de control de versiones)

¿Qué es un "sistema de control de versiones" (vcs)? Pues es una herramienta que utilizan normalmente los programadores para versionar los cambios realizados sobre el código fuente y trabajar en equipo.
Básicamente funciona así:
Tú tienes una serie de ficheros en tu ordenador, modificas, añades, o haces algo, y haces "commit". Sigues trabajando tan normal y cada vez que te parezca que haces un cambio importante haces "commit". Con esto tienes varias ventajas, lo más importante es que puedes volver cualquier fichero a una revisión anterior. También puedes ver un log de los cambios realizados y otras operaciones.
¿Entonces qué tenemos? pues podemos modificar los ficheros sin miedo porque después de romper algo siempre se puede volver a una versión anterior.
Aparte de eso, los vcs, ofrecen una forma fácil de colaboración entre varias personas. Estos repositorios se pueden publicar, otras personas pueden descargarselos y actualizar su repositorio, e incluso subir cambios que se mezclarán con los tuyos de manera automática.
No lo he explicado muy bien, pero estos sistemas ofrecen la posibilidad de que varias personas trabajen modificando un mismo fichero y que con un par de comandos tengan la versión unificada sin necesidad de enviarse ficheros ni parches ni nada.
BZR
Pues bien, bazaar es un vcs distribuido, fácil de usar y multiplataforma (está en python).
Que sea distribuido quiere decir que cada usuario tendrá su repositorio local en el cual hace los commits, a diferencia de subversion que es centralizado, todos los commits se hacen sobre un repositorio central.
Pero aún siendo distribuido bzr ofrece la posibilidad de utilizarse de manera centralizada, prácticamente igual que svn.
Vamos a lo práctico:
-
Crear un repositorio: crear el repositorio es tan fácil como ejecutar "bzr init" dentro del directorio
-
Añadir/mover/etc ficheros: para añadir/mover/etc es tan fácil como "bzr add fichero" o "bzr mv fichero1 fichero2" y más comandos similares a los comandos unix.
-
Hacer commits: para guardar los cambios en una revisión se utiliza el comando "bzr commit" o "bzr ci" y te abrirá tu editor favorito para que escribas lo que ha cambiado para el log.
-
Ver el log: para ver el log "bzr log"
-
Volver a una revisión anterior: "bzr revert -r2 fichero fichero2" esto devuelve la lista de ficheros a la revisión 2, si quieres volver completamente deberías usarlo sin los nombres de ficheros.
-
Publicar un repositorio (ssh): "bzr push ssh://usuario@dominio/ruta". Esto modificará el repositorio en el dominio/ruta, o lo creará si no existe. Antes de hacer un push hay que hacer un commit de los cambios realizados.
-
Descargar un repositorio: "bzr branch ruta destino". Donde ruta puede ser la ruta anterior, si vamos por ssh, y destino es la carpeta que creará para alojar el repositorio.
-
Actualizar un repositorio: Una vez que tengamos el repositorio descargado con branch podemos actualizarlo a la última versión con "bzr pull" desde dentro del directorio del repositorio.
-
Utilizar cómo subversion: Para poder utilizarlo de modo centralizado hay que utilizar el comando "bzr bind ruta" desde dentro del directorio. Una vez hecho esto se puede actualizar con "bzr update", y desde este momento cada commit no será local, sino que también se hará sobre el servidor.
-
Y un montón de cosas más, para más información man bzr
Otra cosa chachi que tiene bzr es que es el sistema utilizado por defecto en launchpad, dónde puedes crear todas las ramas que quieres para tener tu código en un servidor. Algún proyecto tengo yo por ahí.
Y para finalizar decir que no sólo se utiliza para código, yo por ejemplo lo he utilizado para versionar la documentación de mi proyecto fin de carrera.



