You are on page 1of 8

Bazaar la herramienta para

el control de versiones de
forma distribuida
Un sistema de control de versiones es el encargado de la gestión de los diversos
cambios que se realizan sobre los elementos dentro el desarrollo de un producto
software o en las configuraciones del mismo.

✔ Llevar un historial de los cambios


en cada elemento del proyecto y
anotar el autor de los cambios. Cada
uno de los cambios se denomina
revisión.
✔ Posibilidad de añadir, borrar, mover
o editar los elementos.
Capacidad de gestionar ramas de
Introducción ✔
desarrollo paralelas a la principal.
Los sistemas de control de versiones , en la
✔ Gestión de conflictos, en el caso de
actualidad se han convertido en un elemento
que más de un usuario cambie un
indispensable en el proceso de desarrollo de
elemento del proyecto.
un producto software; de igual forma se
convierten en un aliado importante de la ✔ Generación de informes de estado,
ingeniería de software en la tarea de donde se muestren las diferencias
conseguir como resultado un producto de entre distintas revisiones.
software de calidad.
Los sistemas de control de versiones desde Clasificación
sus inicios fueron utilizados principalmente en
la industria informática, pero hoy en día estos ✔ Centralizados: existe un repositorio
sistemas son utilizados tanto por industrias centralizado de todo el código, del
como por desarrolladores individuales, cual es responsable un único usuario
considerando que estos últimos le dieron (o conjunto de ellos). Se facilitan las
más dinamismo a su desarrollo y evolución. tareas administrativas a cambio de
reducir la potencia y flexibilidad, pues
Los sistemas de control de versiones se todas las decisiones fuertes (como
constituyen en un buen complemento a los crear una nueva rama) necesitan la
sistemas de backups. aprobación del responsable.
✔ Distribuidos: se aumenta la
Características de un capacidad de decisión distribuida,
característica que dará mayor
sistema de control de flexibilidad en el uso, pero en algunos
versiones casos puede dificultar la
sincronización.
✔ Gestionar el almacenamiento de
cada uno de los elementos del ✔
proyecto.
Funcionamiento ✔ Módulo: Conjunto de directorios y/o
archivos dentro del repositorio que
Todos los sistemas de control de versiones pertenecen a un proyecto común.
se basan en disponer de un repositorio, que
✔ Rótulo: Identificador asignado a un
es el conjunto de información gestionada por
módulo o fichero, asignado en un
el sistema. Este repositorio contiene el
momento determinado, orientado a
historial de versiones de todos los elementos
una búsqueda posterior.
gestionados.
✔ Revisión: Una revisión es una versión
Cada uno de los usuarios puede crearse una
determinada de un archivo.
copia local duplicando el contenido del
repositorio para permitir su uso. Es posible ✔ Línea base: Una revisión aprobada
duplicar la última versión o cualquier versión de un fichero, a partir del cual se
almacenada en el historial. Este proceso se pueden realizar cambios
suele conocer como check out. subsiguientes.
Al momento de realizar modificaciones en la ✔ Injertar rama o branch: Un módulo
copia local existen dos alternativas: puede ser branched o bifurcado en un
momento dado, de forma que, en
✔ Exclusivos: para poder realizar un
adelante, dos copias de esos ficheros
cambio es necesario marcar en el
puedan ser desarrolladas a diferentes
repositorio el elemento que se desea
velocidades o de diferentes formas,
modificar y el sistema se encargará
de modo independiente.
de impedir que otro usuario pueda
modificar dicho elemento. ✔ Check-out: Permite crear una copia
de trabajo local desde el repositorio.
✔ Colaborativos: en el que cada
Se puede especificar una revisión
usuario se descarga la copia, la
específica, por defecto se suele
modifíca y el sistema
obtener la última.
automáticamente mezcla las diversas
modificaciones. El principal problema ✔ Commit o check-in: Los cambios
es la posible aparición de conflictos realizados localmente son escritos o
que deban ser solucionados integrados sobre el repositorio.
manualmente o las posibles
✔ Conflicto: Un conflicto ocurre cuando
inconsistencias que surjan al
el sistema es incapaz de fusionar los
modificar el mismo fichero por varias
cambios, algunas veces precisa
personas no coordinadas. Esta
intervención manual.
semántica no es apropiada para
ficheros binarios. ✔ Cambio: Un cambio representa una
modificación específica a un fichero
Tras realizar la modificación es necesario
bajo control de versiones.
actualizar el repositorio con los cambios
realizados. Habitualmente este proceso se ✔ Lista de cambios: Son listas que
denomina commit, check in. identifican una serie de cambios a
realizarse en un solo commit. Útil al
momento de revisar un cambio a
Conceptos a considerar al partir de un identificador.
momento de utilizar un ✔ Exportación: Similar a un check-out,
control de versiones crea un árbol de directorios limpio sin
los metadatos de control de versiones
✔ Repositorio: Es el lugar en el que se presentes en la copia de trabajo. Se
almacenan los datos actualizados e utiliza a menudo de forma previa a la
históricos, a menudo un servidor publicación de los contenidos.
(proceso centralizado), el PC de los
desarrolladores (proceso distribuido) ✔ Importación: Una importación es la
acción de copia un árbol de
directorios local (que no es en ese ✔ Amigable: Orientado principalmente a
momento una copia de trabajo) en el personas que recién empiezan a
repositorio por primera vez. hacer uso de este tipo de
herramientas, enfocado
✔ Integración o fusión: Una
principalmente a la usabilidad y
integración o fusión une dos conjuntos
eficiencia.
de cambios sobre un fichero o un
conjunto de ficheros en una revisión ✔ Elegante: Soporta el renombrado de
unificada de dicho fichero o ficheros. archivos y directorios
✔ Actualización: Integra los cambios ✔ Rápido: Permite obtener rápidamente
que han sido hechos en el repositorio sus ventajas y características sin
(por ejemplo por otras personas) en la afectar al proceso de desarrollo.
copia de trabajo local.
✔ Eficiente: Su almacenaje utiliza un
✔ Copia de trabajo: La copia obtenida formato altamente eficiente y limpio.
desde el repositorio en el área de
✔ Ligero: No precisa tener un servidor
trabajo local, se la realiza en un
dedicado
momento del tiempo o revisión
específica ✔ Extensible: Posee una arquitectura
basada en plugins, aspecto que
✔ Congelar: Representa permitir los
permite dotarle de mayores
últimos cambios (commits) para
características especificas y acorde a
solucionar las fallas a resolver en una
cada necesidad.
entrega (release) y suspender
cualquier otro cambio antes de una ✔ Embebido: Característica que le
liberación, con el fin de obtener una permite estar presente en una serie
versión consistente. de aplicaciones y servicios libres y/o
comerciales.

Qué es Bazaar? ✔ Seguro: Al margen de las


características que posee por si
Bazaar es un sistema de control de mismo, cuenta con el patrocinio de
versiones distribuido, de origen open source. Canonical tanto para su desarrollo
como para su suporte
✔ Libre: Disponible bajo licencia GPL.

Beneficios de un sistema de
control de versiones
distribuido

Trabajo personal
✔ Posibilidad de revertir una revisión
previa
✔ Facilitar la revisión de nuestro propio
código (antes del commit)
Por qué Bazaar? ✔ Sincronización de múltiples maquinas
✔ Adaptable: Orientado a la mayoría de
los trabajos de desarrollo de software
(local y/o remoto).
Desarrollo colaborativo Poniendo a prueba a Bazaar
✔ Un desarrollador puede trabajar sin Para lograr un mejor entendimiento, de todas
interferir con el trabajo de otros las características y funcionalidades que
desarrolladores dispone Bazaar, basaremos nuestro ejemplo
✔ El proceso de fusión es automatizado considerando el siguiente directorio y
en su generalidad. contenido:

✔ Instalación

Que precisamos
Bazaar es un software que puede ser
instalado en varias plataformas mediantes
sus respectivos gestores de paquetes:
✔ Debian, Ubuntu (apt-get)
✔ RHEL, CentOS, Fedora (yum)
✔ Windows, posee un isntalador
✔ Mac OS X (MacPorts).

Identificación Inicial
Antes de comenzar a trabajar es recomendable identificarse, haciendo conocer nuestro nombre
y email:

Verificación de Identificación
Esto permitirá modificar el archivo de
configuración, modificación que puede ser
verificada de la siguiente forma:

Esto ha hecho que Bazaar cree un branch


donde almacenará los ficheros y el histórico
de revisión de los mismos. (crea un directorio
oculto con una serie de subdirectorios y
Inicializar el control de archivos que le permiten mantener el control
versiones y registro de archivos y tareas realizadas, el
contenido es mostrado en la figura siguiente)
Inicializamos el control de versiones de
nuestro directorio
Deshacer cambios
Esta característica puede darse en tres casos
distintos:

Desversionando un archivo

Deshacer el último commit

Poniendo ficheros bajo el


control de versiones
Ahora es momento de ir añadiendo los
ficheros y directorios de los cuales queremos
mantener un control de versiones. Deshacer todos los cambios
desde el ultimo commit:
El deshacer los cambios pueden ser globales
o de forma especifica de algún archivo.

Registrando los cambios


Realizando cambios en
Bazaar nos permite realizar este registro
tanto a nivel global (todo el árbol de nuestros archivos
directorios) como a nivel especifico (solo Ahora procederemos a realizar algunos
ficheros determinados) cambios en alguno de nuestros archivos
(cuadrado.py) y verificar las diferencias con la
versión registrada.
Visualizando el estado de
archivos

Visualizando el historial de
revisiones
Una vez que los cambios se hayan realizado
podemos proceder a registrar el cambio en
nuestro branch mediante un commit, es
recomendable incluir un mensaje descriptivo
en cada commit.

Publicando el branch con sftp


Precisamos tener instalado y configurado un servidor SFTP, que servirá como plataforma de
publicación. Asumiremos que nuestro branch será publicado en
http://proyecto.dominio.com/repositorio:

Esto hace que Bazaar cree el directorio repositorio y dentro de el coloque el branch de nuestro
proyecto.
Creando una nueva rama (branch)
Muchas veces es necesario trabajar sobre ramas publicadas por otros desarrolladores; para
esto podemos traer una copia de la publicación que hicimos anteriormente y crear una nueva
rama dentro nuestro proyecto.

Combinando ramas
Dentro del desarrollo podemos contar con varias ramas, cada una con ciertas modificaciones;
en caso que quisiéramos combinar nuestra copia de trabajo con una rama en especial,
podemos hacer un merge de la siguiente forma.

En caso de desear registrar estos cambios en nuestro repositorio local deberemos hacer un
commit.

Distribuir nuestros proyectos


Antes de empezar a distribuir los archivos de nuestro desarrollo, podemos etiquetarlos para
mantenerlo en el registro y posteriormente empaquetarlos.

Etiquetado

Empaquetado
GUIs de ayuda Ganotate
Bazaar dispone de una serie de GUIs que
permiten realizar varias de la tareas de forma
gráfica.

Gbranch

Gcommit

Gdiff

Visualize Referencias
[1] http://bazaar-vcs.org/
[2] http://bazaar-vcs.org/Documentation

Autor

Anotate

Esteban Saavedra López


Líder de la Comunidad ATIX (Oruro – Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org

You might also like