CVS ("Concurrent Versioning System")

CVS ("Concurrent Versioning System") es un software Open-Source que permite administrar los cambios realizados en el código fuente ("Source Code") de cualquier archivo ya sea en: C, C++, Java, HTML, XML e inclusive hasta diferentes versiones de archivos ejecutables ("binarios").

Una de las ventajas que ofrece CVS es que no requiere guardar cada versión completa del archivo, esto es, se mantiene un depósito (" repository ") donde son administradas las distintas versiones maestras de cada archivo. Este depósito (" repository ") no puede ser accesado directamente, los archivos son actualizados a través de una copia de este depósito ("working copy"). Cada usuario que desee accesar cierto archivo genera una copia de trabajo ("working copy") a partir del deposito, realiza los cambios pertinentes al archivo y una vez finalizado, actualiza el depósito (" repository ").

Si al momento de intentar actualizar el deposito (" repository ") el archivo ha sido modificado por otro usuario, pueden ocurrir dos situaciones:

  1. Si las modificaciones realizadas no intervienen (ocurre conflicto) con los cambios en el depósito, CVS fusiona los cambios.
  2. Si las modificaciones realizadas por el usuario resultan en un conflicto con el depósito, entonces CVS le avisa al usuario sobre la situación, indicándole que usuario realizó ese cambio,detalles del cambio,hora y fecha, para de esta forma resolver el conflicto y poder realizar los cambios pertinentes.

Además de esta funcionalidad principal que ofrece CVS, CVS también es capaz de producir versiones de archivo a cierto punto en el tiempo, esto es, si la versión mas reciente es 3.1.1, CVS puede producir la 1.4.1 o 2.4 del deposito , también es capaz de subjerarquizar archivos y otras funcionalidades utilizadas en proyectos que requieren control de versiones.

CVS en un Sitio de Internet

La mayoría del contenido en todo sitio de Internet pasa por tres etapas:

Debido a que CVS mantiene un depósito de archivos y éste es capaz de generar versiones a un cierto punto en el tiempo, es una herramienta ideal para esta situación.

Como empezar ? Que se Requiere ?

Se requieren 3 Servidores de Páginas (Web-Server) y un depósito de CVS. NOTA: No se requieren 3 "Hosts" para poder utilizar esta configuración, un sólo "Host" (Computadora Física) es capaz de mantener 3 Servidores de Páginas, sólo se requiere de múltiples direcciones IP y/o distintos "Virtual Hosts" (Vea Virtual Hosting con Apache ).

El Servidor de Páginas de Desarrollo

Este servidor de páginas tomará su información de una copia del depósito de CVS ("working copy"). Digamos que esta copia se localice en /www/desarollo/ ,los programadores y diseñadores gráficos modificaran y realizaran cambios a las páginas sobre esta copia de trabajo ("working copy")

El Servidor de Páginas de Prueba

Una vez que en el depósito CVS se encuentre una versión de desarrollo estable, se genera un copia del depósito ("working copy") de esta versión de desarrollo.Sobre esta versión de desarrollo se llevaran acabo pruebas más exhaustivas para determinar si es posible pasarla a producción.Digamos que esta copia se localice en /www/pruebas/, el personal que este realizando las pruebas accesarán esta copia de trabajo ("working copy") directamente y realizaran los cambios adecuados.

El Servidor de Producción

Este Servidor de Páginas será el encargado de enviar la información al público en general, este servidor de páginas tomará los archivos del directorio /www/produccion , ahora ,de donde provienen estos archivos en /www/produccion ? Estos archivos surgirán de una copia de trabajo ("working copy") del depósito CVS que haya pasado satisfactoriamente por las etapas de desarrollo y prueba.

Posible Secuencia de Eventos

Considerando que :

Los programadores y diseñadores gráficos realizan cambios a las páginas y programas ( aplicaciones de servidor ) en su copia de trabajo ("working copy") (Versión 3.0), una vez que se han realizado los cambios suficientes, actualizan el depósito de CVS a la versión 4.0

El personal que esta realizando la pruebas en el "servidor de prueba" determina que la Versión 2.0, se encuentra preparada para el "servidor de producción", por lo tanto se actualiza la copia de trabajo ("working copy") del "servidor de producción" para que este refleje la versión 2.0.

Sin embargo, después de 14 horas el "servidor de producción" empieza a generar errores, y sus visitantes se empiezan a quejar, además de esto el personal que realiza la última afinación ("servidor de pruebas") ya se encuentra trabajando sobre la versión 3.0 que entregaron los programadores y diseñadores gráficos.

La solución con CVS

Pero que sucede con estos cambios nuevos a la versión 2.0, si ya se había empezado a trabajar con la versión 3.0 ?. Como se mencionó anteriormente si CVS determina que no se perderá información, fusionará los cambios y en dado caso que surja un conflicto se notificará al usuario para que determine cual será la información final.

Donde se puede obtener CVS ?

Links: