Revisiones en CVS

Revisiones

Por Default cada vez que un usuario realiza un commit sobre un archivo, CVS genera versiones en el siguiente orden, 1.1, 1.2, 1.3, 1.4, esto puede ocasionar una falta de coordinación entre archivos comunes, ya que si un archivo es actualizado 7 veces y otro 3 ocasiones no existe ninguna correlación entre ambos, para sobrepasar este problema se utliza lo que es llamado tag .

Un tag es un link simbólico que puede ser asignado a cualquier version de un archivo , el tag permite agrupar archivos para lograr mayor coordinacion en el desarrollo de un proyecto, a diferencia de un modulo que solo agrupa directorios, los tags son capaces de agrupar archivos en diferentes sub-directorios. Para diferenciarse de versión, un grupo de archivos que posean un tag en común son denominados release .

routers   lucent.html    cisco.html    genericos.html

              1.2                         1.1

  2.1  ------ 1.3   ------ 1.9   ------   1.2   -----tag 
                                               conectividad 
                                               (Release 1.0)
  2.2         1.4          1.10           1.3

  2.3                      1.11

Para agregar un Tag a lucent.html se ejecuta lo siguiente:

 cvs tag conectividad-1_0 lucent.html  

Esto agregará el tag conectividad-1_0 a lucent.html, para verificar esta acción se puede utlizar el comando: cvs status -v lucent.html , recuerde que conectividad-1_0 es considerado un release y no una versión

Como generar una Copia de Trabajo ("Working Copy") de un Release

Para generar un "working copy" de los archivos pertenecientes a un "Release" se utiliza el parametro -r con el comando checkout :

 cvs checkout -r conectividad-1_0 Internet 

esto genera una copia de trabajo ("Working Copy") del modulo Internet con los archivos que pertencen al tag (release) conectividad-1_0 .

Ramificaciones

CVS permite realizar ramificaciones de un documento o directorio , de esta manera varios archivos parten del mismo truncal y pueden ser modificados en paralelo.

Para que son buenas las ramificaciones ?

Supongamos que ya se esta en la fase de produccion de un sitio de Internet y existe el Release 1.0, usted sigue modificando todos los archivos del depósito (NOTA:son archivos(revisiones) y no release(tags)), y planea crear el release 2.0 dentro de unos meses. Sin embargo, empiezan a existir quejas de sus visitantes sobre errores en el servidor de producción, se revisa el release 1.0 y se corrigen los errores. Ya existen modificaciones para el Release 2.0, ahora se deben fusionar los cambios, pero como ? Este caso es simplificado con el uso de Ramificaciones.

Uso de Ramificaciones

Al momento en el que se decida la creación del release 1.0, éste debe de ser ramificado en dos, una ramificación será exclusivamente para corregir posibles errores del release 1.0, mientras la otra ramificación continuará el modelo normal de desarrollo hacia el release 2.0.

   truncal 
     |
     |   release 1.0 (tag)
     |  /
    7.0 ------------- 7.0.2.1
     |                     |
     |                     |
    7.1               7.0.2.2
     |                     |
     |                     |
    7.2               7.0.2.3
     |                     |
     |                     |
    7.3               7.0.2.4  release 2.0 (tag)
     .               .
     .              .
    7.4 . . . . . .    Cambios se deben fusionar

En la gráfica anterior se puede observar que a partir de la revision 7.0 de cierto documento se decidio integrar el release 1.0 ; a partir de este release se generaron dos ramificaciones, una sobre la que se corregirán posibles errores del documento (lado izquierdo), y otra sobre la que se continuará el desarrollo hacia 2.0 (lado derecho). Cuando se decida integrar el release 2.0, la ramificación de corrección (izquierda) será integrada al truncal (ramificación derecha). Esto ocurrirá no solo para este documento, sino para todos aquellos que formen parte del release.

Para crear una ramificación se utiliza:

  
 cvs tag -b osmosislatina_1.0 

Esto creará una ramificación basado en la version que se encuentre en la copia de trabajo ("Working Copy"), y se le asignará el nombre de osmosislatina_1.0 . Es importante saber que esta ramificación es creada en el depósito y no en la copia de trabajo ("Working Copy"), para trabajar sobre esta ramificación es necesario actualizar la copia de trabajo ("Working Copy"), esto se hace con el comando:

  
 cvs checkout -r osmosislatina_1.0 www 

A partir del comando anterior ya se esta trabajando sobre la ramificación osmosislatina_1.0 del subdirectorio www , para corraborar esto utilize el comando status ,ejemplo:

 
 osmosis# cvs status 

despliegará información detallada sobre el archivo, uno de esos parametros es el pertencer a una ramificación (branch).

Fusionar Ramificaciones

Para fusionar una ramificación se utiliza la siguiente secuencia: