Está en la página 1de 8

Bazaar la herramienta para el control de versiones de forma distribuida

Un sistema de control de versiones es el encargado de la gestin 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 revisin. Posibilidad de aadir, borrar, mover o editar los elementos. Capacidad de gestionar ramas de desarrollo paralelas a la principal. Gestin de conflictos, en el caso de que ms de un usuario cambie un elemento del proyecto. Generacin de informes de estado, donde se muestren las diferencias entre distintas revisiones.

Introduccin
Los sistemas de control de versiones , en la actualidad se han convertido en un elemento indispensable en el proceso de desarrollo de un producto software; de igual forma se convierten en un aliado importante de la ingeniera de software en la tarea de conseguir como resultado un producto de software de calidad. Los sistemas de control de versiones desde sus inicios fueron utilizados principalmente en la industria informtica, pero hoy en da estos sistemas son utilizados tanto por industrias como por desarrolladores individuales, considerando que estos ltimos le dieron ms dinamismo a su desarrollo y evolucin. Los sistemas de control de versiones se constituyen en un buen complemento a los sistemas de backups.

Clasificacin

Centralizados: existe un repositorio centralizado de todo el cdigo, del cual es responsable un nico usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir la potencia y flexibilidad, pues todas las decisiones fuertes (como crear una nueva rama) necesitan la aprobacin del responsable. Distribuidos: se aumenta la capacidad de decisin distribuida, caracterstica que dar mayor flexibilidad en el uso, pero en algunos casos puede dificultar la sincronizacin.

Caractersticas de sistema de control versiones

un de

Gestionar el almacenamiento de cada uno de los elementos del proyecto.

Funcionamiento
Todos los sistemas de control de versiones se basan en disponer de un repositorio, que es el conjunto de informacin gestionada por el sistema. Este repositorio contiene el historial de versiones de todos los elementos gestionados. Cada uno de los usuarios puede crearse una copia local duplicando el contenido del repositorio para permitir su uso. Es posible duplicar la ltima versin o cualquier versin almacenada en el historial. Este proceso se suele conocer como check out. Al momento de realizar modificaciones en la copia local existen dos alternativas:

Mdulo: Conjunto de directorios y/o archivos dentro del repositorio que pertenecen a un proyecto comn. Rtulo: Identificador asignado a un mdulo o fichero, asignado en un momento determinado, orientado a una bsqueda posterior. Revisin: Una revisin es una versin determinada de un archivo. Lnea base: Una revisin aprobada de un fichero, a partir del cual se pueden realizar cambios subsiguientes. Injertar rama o branch: Un mdulo puede ser branched o bifurcado en un momento dado, de forma que, en adelante, dos copias de esos ficheros puedan ser desarrolladas a diferentes velocidades o de diferentes formas, de modo independiente. Check-out: Permite crear una copia de trabajo local desde el repositorio. Se puede especificar una revisin especfica, por defecto se suele obtener la ltima. Commit o check-in: Los cambios realizados localmente son escritos o integrados sobre el repositorio. Conflicto: Un conflicto ocurre cuando el sistema es incapaz de fusionar los cambios, algunas veces precisa intervencin manual. Cambio: Un cambio representa una modificacin especfica a un fichero bajo control de versiones. Lista de cambios: Son listas que identifican una serie de cambios a realizarse en un solo commit. til al momento de revisar un cambio a partir de un identificador. Exportacin: Similar a un check-out, crea un rbol de directorios limpio sin los metadatos de control de versiones presentes en la copia de trabajo. Se utiliza a menudo de forma previa a la publicacin de los contenidos. Importacin: Una importacin es la accin de copia un rbol de

Exclusivos: para poder realizar un cambio es necesario marcar en el repositorio el elemento que se desea modificar y el sistema se encargar de impedir que otro usuario pueda modificar dicho elemento. Colaborativos: en el que cada usuario se descarga la copia, la modifca y el sistema automticamente mezcla las diversas modificaciones. El principal problema es la posible aparicin de conflictos que deban ser solucionados manualmente o las posibles inconsistencias que surjan al modificar el mismo fichero por varias personas no coordinadas. Esta semntica no es apropiada para ficheros binarios.

Tras realizar la modificacin es necesario actualizar el repositorio con los cambios realizados. Habitualmente este proceso se denomina commit, check in.

Conceptos a considerar al momento de utilizar un control de versiones

Repositorio: Es el lugar en el que se almacenan los datos actualizados e histricos, a menudo un servidor (proceso centralizado), el PC de los desarrolladores (proceso distribuido)

directorios local (que no es en ese momento una copia de trabajo) en el repositorio por primera vez.

Integracin o fusin: Una integracin o fusin une dos conjuntos de cambios sobre un fichero o un conjunto de ficheros en una revisin unificada de dicho fichero o ficheros. Actualizacin: Integra los cambios que han sido hechos en el repositorio (por ejemplo por otras personas) en la copia de trabajo local. Copia de trabajo: La copia obtenida desde el repositorio en el rea de trabajo local, se la realiza en un momento del tiempo o revisin especfica Congelar: Representa permitir los ltimos cambios (commits) para solucionar las fallas a resolver en una entrega (release) y suspender cualquier otro cambio antes de una liberacin, con el fin de obtener una versin consistente.

Amigable: Orientado principalmente a personas que recin empiezan a hacer uso de este tipo de herramientas, enfocado principalmente a la usabilidad y eficiencia. Elegante: Soporta el renombrado de archivos y directorios Rpido: Permite obtener rpidamente sus ventajas y caractersticas sin afectar al proceso de desarrollo. Eficiente: Su almacenaje utiliza un formato altamente eficiente y limpio. Ligero: No precisa tener un servidor dedicado Extensible: Posee una arquitectura basada en plugins, aspecto que permite dotarle de mayores caractersticas especificas y acorde a cada necesidad. Embebido: Caracterstica que le permite estar presente en una serie de aplicaciones y servicios libres y/o comerciales. Seguro: Al margen de las caractersticas que posee por si mismo, cuenta con el patrocinio de Canonical tanto para su desarrollo como para su suporte Libre: Disponible bajo licencia GPL.

Qu es Bazaar?
Bazaar es un sistema de control de versiones distribuido, de origen open source.

Beneficios de un sistema de control de versiones distribuido


Trabajo personal

Posibilidad de revertir una revisin previa Facilitar la revisin de nuestro propio cdigo (antes del commit) Sincronizacin de mltiples maquinas

Por qu Bazaar?

Adaptable: Orientado a la mayora de los trabajos de desarrollo de software (local y/o remoto).

Desarrollo colaborativo

Poniendo a prueba a Bazaar


Para lograr un mejor entendimiento, de todas las caractersticas y funcionalidades que dispone Bazaar, basaremos nuestro ejemplo considerando el siguiente directorio y contenido:

Un desarrollador puede trabajar sin interferir con el trabajo de otros desarrolladores El proceso de fusin es automatizado en su generalidad. Instalacin

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).

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

Verificacin de Identificacin
Esto permitir modificar el archivo de configuracin, modificacin que puede ser verificada de la siguiente forma:

Inicializar versiones

el

control

de

Inicializamos el control de versiones de nuestro directorio

Esto ha hecho que Bazaar cree un branch donde almacenar los ficheros y el histrico de revisin de los mismos. (crea un directorio oculto con una serie de subdirectorios y archivos que le permiten mantener el control y registro de archivos y tareas realizadas, el contenido es mostrado en la figura siguiente)

Deshacer cambios
Esta caracterstica 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 aadiendo 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 algn archivo.

Registrando los cambios


Bazaar nos permite realizar este registro tanto a nivel global (todo el rbol de directorios) como a nivel especifico (solo ficheros determinados)

Realizando cambios nuestros archivos

en

Ahora procederemos a realizar algunos cambios en alguno de nuestros archivos (cuadrado.py) y verificar las diferencias con la versin 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 publicacin. 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 publicacin 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 quisiramos 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
Bazaar dispone de una serie de GUIs que permiten realizar varias de la tareas de forma grfica.

Ganotate

Gbranch

Gcommit Gdiff

Visualize

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

Autor

Anotate

Esteban Saavedra Lpez Lder de la Comunidad ATIX (Oruro Bolivia) Activista de Software Libre en Bolivia jesaavedra@opentelematics.org http://jesaavedra.opentelematics.org

También podría gustarte