47.4. Introducción a CVS

CVS se recomienda para tareas de sincronización en el caso de archivos individuales editados muy a menudo y cuyo formato es ASCII, texto fuente de programas o similar. Si bien es posible utilizar CVS para sincronizar datos en otros formatos (como por ejemplo JPEG), esto se traduce rápidamente en grandes cantidades de datos, ya que todas las versiones de un archivo se almacenan permanentemente en el servidor CVS. Además, en estos casos no se utilizan todas las prestaciones de CVS. El uso de CVS para sincronizar datos sólo es posible cuando todas las estaciones de trabajo tiene acceso al mismo servidor.

47.4.1. Configuración del servidor CVS

El servidor es la máquina en la que están situados todos los archivos válidos, incluyendo la versión actual de todos los archivos. Como servidor se puede utilizar una estación de trabajo de instalación fija. Se recomienda realizar periódicamente copias de seguridad de los datos del servidor CVS.

Una forma adecuada de configurar el servidor CVS consiste, por ejemplo, en autorizar a los usuarios el acceso vía SSH al mismo. Si el usuario es conocido en el servidor como tux y el software CVS está instalado tanto en el servidor como en el cliente (ej. un notebook), en la parte del cliente hay que definir además las siguientes variables de entorno:

CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

El comando cvs init permite iniciar el servidor CVS desde la parte del cliente. Esta acción sólo debe realizarse una vez.

Finalmente hay que definir un nombre para la sincronización. Para ello, en un cliente se cambia al directorio que contiene exclusivamente datos administrados por CVS (también puede estar vacío). El nombre del directorio carece de importancia y en este ejemplo se llamará synchome. Para asignar a la sincronización el nombre de synchome, se ejecuta el comando:

cvs import synchome tux wilber

Nota: Muchos comandos de CVS requieren un comentario. Para ello, CVS inicia un editor (aquel que ha sido definido en la variable de entorno $EDITOR o en su defecto vi). El inicio del editor se puede evitar introduciendo directamente el comentario en la línea de comandos, como por ejemplo:

cvs import -m 'es una prueba' synchome tux wilber

47.4.2. Manejo de CVS

A partir de este momento, el repositorio de la sincronización puede extraerse desde cualquier ordenador con cvs co synchome. Al ejecutar este comando se crea un nuevo subdirectorio synchome en el cliente. Si se han realizado modificaciones que quieren transmitirse al servidor, se cambia al directorio synchome (o a uno de sus subdirectorios) y se ejecuta el comando cvs commit.

Este comando transmite por defecto todos los archivos (incluyendo subdirectorios) al servidor. Si sólo se quieren transmitir determinados archivos o directorios, estos deben especificarse en el comando por ejemplo del siguiente modo: cvs commit archivo1 directorio1. Antes de ser transmitidos al servidor, los nuevos archivos o directorios han de declararse parte integrante de CVS con cvs add archivo1 directorio1 y a continuación enviarse al servidor con cvs commit archivo1 directorio1.

Si se cambia de estación de trabajo, debe en primer lugar “extraerse” el repositorio de la sincronización (véase arriba) si no se ha hecho ya en el transcurso de sesiones anteriores en esa misma estación de trabajo.

Para iniciar la sincronización con el servidor se utiliza cvs update. Si desea actualizar archivos o directorios determinados, especifíquelos con cvs update archivo1 directorio1. Si se quieren ver las diferencias entre las versiones almacenadas en el servidor, se utiliza el comando cvs diff o bien cvs diff archivo1 directorio1. De manera alternativa, se puede utilizar el comando cvs -nq update para mostrar los archivos afectados por una actualización.

Durante el proceso de actualización se muestran, entre otros, los siguientes símbolos indicadores de estado:

U

La versión local ha sido actualizada. El proceso de actualización afecta a todos los archivos proporcionados por el servidor y que no están presentes en el sistema local.

M

La versión local ha sido modificada. Si existían cambios en el servidor, es posible fusionar las diferencias en la copia local.

P

La versión local ha sido parcheada. Es decir, CVS ha intentado fusionar la versión en el servidor CVS con la versión local.

C

Existe un conflicto entre el archivo local y la versión actual del repositorio.

?

Este archivo no se encuentra en CVS.

El estado M señaliza los archivos modificados localmente. En este caso puede enviar la copia local con los cambios al servidor o bien, si prefiere prescindir de los cambios y adoptar la versión del servidor, puede eliminarse la copia local y llevar a cabo una actualización, con lo que el archivo que falta se obtiene del servidor. Si sucede que diversos usuarios realizan cambios en idéntico pasaje de un mismo archivo, CVS no es capaz de decidir qué versión ha de ser utilizada. En este caso, la actualización se señalaría con el símbolo C de conflicto.

En este caso examine los signos de conflicto (»> y «<) en el archivo para optar por una de las dos versiones. Si esta labor resulta demasiado complicada, siempre puede abandonar los cambios, borrar el archivo local y ejecutar cvs up para obtener la versión actual del servidor.

47.4.3. Información adicional

Las posibilidades de CVS son muy extensas y aquí sólo se han mencionado algunas de ellas. Puede encontrar más información en las siguientes direcciones:

http://www.cvshome.org/
http://www.gnu.org/manual/