Normalmente, cada miembro del equipo realiza todo su trabajo en su propia área de trabajo, aislado del resto de miembros. De vez en cuando querrá compartir su trabajo con los demás y obtener los cambios efectuados por sus compañeros de equipo. Estas acciones se realizan por medio de corrientes.
Una corriente es el lugar donde un equipo comparte e integra su trabajo saliente.
Puede pensar en una corriente como un área de trabajo compartida que actualizan los miembros del equipo a medida que van efectuando cambios en el proyecto. Este modelo permite a cada miembro trabajar en un proyecto en equipo, compartir su trabajo con los demás miembros cuando se efectúan cambios y acceder al trabajo de los demás miembros a medida que evoluciona el proyecto.
A medida que los miembros de un equipo producen trabajo nuevo, comparten entre sí este trabajo mediante la liberación de dichos cambios en la corriente. De forma similar, cuando desean obtener el trabajo disponible más reciente, ponen al día los cambios en la corriente. De este modo, la corriente sufre un cambio constante, avanzando a medida que los miembros del equipo envían trabajo nuevo.
La corriente efectivamente representa el estado actual del proyecto. En cualquier punto, un miembro del equipo puede ponerse al día con la corriente y saber que está actualizado.
Modelo de programación en equipo
Los sistemas de control de versiones proporcionan dos características importantes necesarias para trabajar en un equipo:
una historia del trabajo que ha enviado el equipo
un modo de coordinar e integrar este trabajo.
El mantenimiento de la historia es importante para poder comparar el trabajo actual con el anterior, revertir a un trabajo anterior que es mejor, etc. La coordinación del trabajo es crítica para que exista una sola definición del estado actual del proyecto que contiene el trabajo integrado del equipo. Esta coordinación se proporciona mediante el modelo de corriente.
Un modelo optimista es aquel en el que cualquier miembro del equipo puede efectuar cambios en cualquier recurso al que tiene acceso. Ya que dos miembros del equipo pueden liberar en la corriente cambios efectuados en el mismo recurso, pueden producirse conflictos que deben solucionarse. Este modelo se denomina optimista porque asume que los conflictos son raros.
Habitualmente, los recursos no existen aisladamente: normalmente contienen dependencias explícitas o implícitas con otros recursos. Por ejemplo, las páginas Web tienen enlaces con otras páginas Web y el código fuente tiene referencias a código descrito en otros recursos de código fuente. Ningún recurso es una isla.
Cuando los recursos se liberan en la corriente, estas dependencias pueden verse afectadas. La garantía de integridad de las dependencias es importante, porque la corriente representa el estado actual del proyecto: en cualquier momento un miembro del equipo puede tomar el contenido de la corriente como la base de un trabajo nuevo.
El flujo de trabajo ideal, por lo tanto, es aquel en que se conserva la integridad de la corriente.
Los procedimientos del flujo de trabajo ideal serían los siguientes:
Inicio nuevo: antes de empezar el trabajo, ponerse al día con el estado actual de la corriente. Si está seguro de que no tiene ningún trabajo local que desea conservar, el modo más rápido de estar al día es seleccionar los proyectos que le interesan en la corriente y seleccionar "Añadir en el área de trabajo". Esta acción sobreescribirá los recursos locales con los de la corriente.
Efectuar cambios: trabajar localmente en el entorno de trabajo, creando recursos nuevos, modificando recursos existentes y guardando localmente los cambios.
Sincronizar: cuando esté preparado para liberar el trabajo, efectuar la acción de Sincronizar con la corriente.
Ponerse al día: examinar los cambios entrantes y añadirlos al entorno de trabajo local. Esta acción permite determinar si hay cambios que pueden afectar a la integridad de lo que está a punto de liberar. Resolver conflictos. Volver a probar, ejecutar analizadores de integridad (por ejemplo, buscar enlaces de hipertexto rotos, garantizar la compilación del código, etc.).
Liberar: ahora que ya está seguro de que los cambios se han integrado bien en el contenido más reciente de la corriente, libere los cambios en la corriente. Como medida de prudencia, puede repetir el paso 4 si vuelven a haber cambios entrantes nuevos.
Por supuesto, este es un flujo de trabajo ideal. Bajo ciertas condiciones, puede estar seguro de que los cambios entrantes no le afectarán y optar por la liberación sin ponerse al día previamente. No obstante, generalmente, los miembros del equipo deben hacer un esfuerzo por seguir un flujo similar al expuesto anteriormente para tener la garantía de que la integridad de la corriente no se verá comprometida accidentalmente.