Formas de trabajo con Bazaar

De ChuWiki
Saltar a: navegación, buscar

Modos de trabajo


Bazaar soporta distintas formas de trabajo, en vez de obligar a que te adaptes a una única posible. No hay "una única forma buena": La mejor forma de trabajo depende de numerosos factores, como el tamaño de tu equipo. Algunas de las formas de trabajo más usadas son las siguientes.


Solo

Cuando se desarrolla software, se editan documentos o se cambian ficheros de configuracion, puede ser útil tener una herramienta VCS (sistema de control de versiones) fácil de usar. Esta forma de trabajo se puede usar de forma efectiva en proyectos donde sólo trabaja una persona.

Workflows single.png

Las ventajas frente a no usar ningún tipo de control de versiones son: tener una copia de seguridad de versiones antiguas, poder volver a ellas y tener la historia de cambios.

Las características de Bazaar apropiadas para esta forma de trabajo es que apenas necesita administración (no hay que levantar ningún servidor) y es fácil de usar.

Pareja

A veces dos personas necesitan trabajar juntas y compartir los cambios que hacen. Normalmente esta situación comienza a partir de una forma de trabajo "solo" (ver punto anterior) o una forma de trabajo "orientada a un equipo" (ver más adelante). En algún momento, la segunda persona realiza una rama (copia incluida la historia) de lo que la primera persona tiene. Ambos pueden seguir trabajando en paralelo haciendo cambios y combinándolos cuando sea conveniente.

Workflows peer.png

Las ventajas sobre "Solo" son:

  • Se comparten fácilmente los cambios.
  • Cada línea de texto en cada fichero se atribuye a un cambio concreto, incluyendo quién lo cambió, cuando y por qué.

Las ventajas de Bazaar sobre CVS y Subversion para esta forma de trabajo incluyen:

  • No es necesario un servidor.
  • "combinación inteligente" (intelligent merging) quiere decir que combinar cambios muchas veces no es un tormento.

Centralizado

Conocido también como "bloqueo de paso". Este es básicamente la misma forma de trabajo aconsejada/obligada por CVS y Subversion. Todos los desarrolladores trabajan en la misma rama (o ramas). Ejecutan "bzr update" para tener su copia actualizada y ejecutan "bzr commit" para almacenar sus cambios.

Workflows centralized.png

Subversion y CVS son buenas elecciones para este modo de trabajo porque lo hacen fácil. A diferencia de la mayoría de las herramientas de control de versiones distribuidas, Bazaar también hace fácil esta forma de trabajo puesto que la contempla directamente. Además, Bazaar proporciona importantes ventajas frente a Subversion y CVS:

  • Creación de ramas y combinación de las mismas mucho mejor.
  • Permite renombrar mejor.

Centralizado con commits locales

Esta forma de trabajo es esencialmente igual que la "Centralizada", excepto que los desarrolladores van haciendo cambios y haciendo un "commit --local" o desligan su checkout, y solo hacen un commit de su trabajo en la línea principal compartida cuando han terminado totalmente.

Workflows localcommit.png

Ventajas sobre "Centralizado":

  • Pueden trabajar sin conexión a red o están de viaje.
  • Menos interferencia en el trabajo de los demás si hacen un commit con errores.

Suvbersion y CVS no soportan esta forma de trabajo. Otros sistemas de control de versiones distribuidos sí lo soportan, pero no de una forma tan directa como Bazaar.

Descentralizado con una línea principal compartida

En este modo de trabajo, cada desarrollador tienes su propia rama o ramas, más commit correctos a la rama principal. Hacen su trabajo en su rama personal y lo combinan con la principal sólo cuando está totalmente lista.

Workflows shared.png

Ventajas sobre "Centralizado con commits locales":

  • Organización del trabajo más fácil - se pueden desarrollar cambios separados en sus propias ramas.
  • Los desarrolladores pueden combinar entre sí sus cambios en sus ramas personales cuando están trabajando en algo común.

Subversion y CVS no soportan esta forma de trabajo. Otros sistemas de control de versiones distribuidos sí lo hacen. Cuando se selecciona una de estas herramientas para este modo de trabajo, es importante que sea fácil de usar, tenga muy buena calidad a la hora de combinar, un buen soporte para el renombrado y un almacenamiento eficiente (es decir, repositorios compartidos). Todas estas cualidades las tiene Bazaar.

Descentralizado con un supervisor humano

En este modo de trabajo, cada desarrollador tiene su propia rama o ramas, más un acceso de sólo lectura a la rama principal. Un desarrollador (el supervisor) tiene permiso de commit en la rama principal. Cuando un desarrollador quiere que se combien su trabajo, le pide al supervisor que lo haga. El supervisor revisa el código y lo combina con la rama principal si cumple con los estándares necesarios.

Workflows gatekeeper.png

Ventajas sobre "Descentralizado con una línea principal compartida":

  • El código siempre se revisa antes de entrar en la línea principal.

Una herramienta asociada con Bazaar llamada Buggy puede ser útil para ver cuando los cambios están preparados para revisión, su estado y los comentarios del supervisor. Subversion y CVS no soportan esta forma de trabajo. Otros sistemas de control de versiones distribuidos sí lo hacen. Cuando se selecciona uno de estos, nuevamente hay que fijarse en la facilidad de uso, la calidad de su merging, buen soporte para renombrado y almacenamiento eficiente.

Descentralizado con un supervisor automático

En este modo de trabajo, cada desarrollador tiene su propia rama o ramas, más acceso de sólo lectura a la rama principal. Un software supervisor (por ejemplo PQM) tiene permisos de escritura en la rama principal. Cuando un desarrollador quiere que su trabajo se combine en la rama principal, pide a otra persona que lo revise. Una vez que se ha revisado, o bien el autor o bien el revisor pide al supervisor que lo combine, según la política de trabajo del equipo. El supervisor hace un merge, compila y ejecuta los test. Si todo pasa, combina el código en la rama principal.

Nota: Como alternativa, el paso de revisión se puede omitir y el autor puede enviar el cambio al supervisor automático sin revisión. Esto es especialmente apropiado cuando se usan prácticas como la programación en parejas, que efectuan revisión de código sobre la marcha según se hace, en vez de como un paso separado.

Workflows pqm.png

Ventajas sobre "Descentralizado con un supervisor humano":

  • El código siempre se prueba antes de que entre la rama principal. La integridad de la rama principal es, por tanto, alta.
  • Mejor escalado cuando el equipo crece.

Una herramienta asociada a Bazaar llamada Patch Queue Manager (PQM) puede hacer de supervisor automático. En cualquier caso, los comentarios para seleccionar una herramienta del punto anterior "Descentralizado con supervisor humano" son válidos aquí también.

Notas

Una de las grandes cosas de Bazaar es su adaptabilidad para trabajar de distintas formas. Las formas se trabajo se pueden cambiar, mezclar o ajustar como se necesite. Por ejemplo, un equipo puede decidir usar una forma tradicional "centralizada", pero complementarla con el modo en "pareja", es decir, dos desarrolladores intercambian directamente sus cambios cuando trabajan juntos.

Las formas de trabajo son muy independientes de la forma de almacenamiento. Si quieres asegurarte que todas tus ramas se guardan en un repositorio central, hay formas de hacerlo, por ejemplo, llevando los cambios a un servidor central del que se hacen backups. Muchos equipos que usan herramientas de control de versiones, los desarrolladores suben el código al repositorio simplemente como backup o para etiquetarlo. Los sistemas de control de versiones distribuidos permiten hacer lo mismo, pero sin subir los cambios a la rama principal antes de lo debido.

Los desarrolladores de Bazaar usan "Descentralizado con supervisor automático" para desarrollar el mismo Bazaar.


Enlaces externos