27.4. Introducción a CVS

CVS es una herramienta adecuada para tareas de sincronización si los archivos individuales se editan con mucha frecuencia y se almacenan en un formato de archivo como texto ASCII o texto de código fuente. Es posible el uso de CVS para sincronizar los datos de otros formatos, como archivos JPEG, pero genera grandes cantidades de datos, ya que todas las variantes de cada archivo se almacenan de forma permanente en el servidor CVS. En esos casos, no es posible utilizar muchas de las posibilidades de CVS. La utilización de CVS para sincronizar archivos sólo es posible si todas las estaciones de trabajo pueden acceder al mismo servidor.

27.4.1. Configuración de un servidor CVS

El servidor es el host en el que se encuentran todos los archivos válidos, incluidas las versiones más recientes de todos los archivos. Cualquier estación de trabajo fija puede utilizarse como servidor. Si es posible, los datos del repositorio CVS deben incluirse en copias de seguridad regulares.

Al configurar un servidor CVS, puede ser buena idea proporcionar a los usuarios acceso al servidor mediante SSH. Si el nombre del usuario en el servidor es tux y el software CVS está instalado tanto en el cliente como en el servidor, será necesario definir las siguientes variables de entorno en el cliente:


CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

Puede utilizar el comando cvs init para iniciar el servidor CVS desde el cliente. Sólo es necesario llevar a cabo esta acción una vez.

Por último, es necesario asignar un nombre a la sincronización. Seleccione o cree un directorio en el cliente, exclusivamente para que contenga los archivos que desea gestionar con CVS (el directorio puede estar vacío). El nombre del directorio será también el de la sincronización. En este ejemplo, el directorio se llama synchome. Acceda a este directorio e introduzca los siguientes comandos para establecer synchome como nombre de la sincronización:


cvs import synchome tux wilber

Muchos comandos de CVS requieren un comentario. Para que sea posible incluirlo, CVS inicia un editor (el editor definido en la variable de entorno $EDITOR o vi si no se ha definido ninguno). El editor puede eludirse introduciendo el comentario antes de la línea de comandos, como en el siguiente ejemplo:


cvs import -m "esto es una prueba" synchome tux wilber

27.4.2. Uso de CVS

El repositorio de sincronización puede consultarse desde todos los hosts con el comando cvs co synchome. Esta acción crea un nuevo subdirectorio synchome en el cliente. Para asignar los cambios al servidor, acceda al directorio synchome (o uno de sus subdirectorios) e introduzca cvs commit.

Por defecto, todos los archivos (incluidos los subdirectorios) se asignan al servidor. Para asignar únicamente archivos o directorios individuales, especifíquelos de la siguiente forma: cvs commit archivo1 directorio1. Los archivos y directorios nuevos deben añadirse primero al repositorio con el comando cvs add archivo1 directorio1 para que sea posible asignarlos al servidor. A continuación, asigne los archivos y directorios recién añadidos con cvs commit archivo1 directorio1.

Si cambia a otra estación de trabajo, compruebe el repositorio de sincronización, si no lo ha hecho ya durante una sesión anterior en la misma estación de trabajo (consulte el procedimiento descrito anteriormente).

Inicie la sincronización con el servidor mediante cvs update. Actualice los archivos o directorios individuales con el comando cvs update archivo1 directorio1. Para observar las diferencias entre los archivos actuales y las versiones almacenadas en el servidor, utilice el comando cvs diff o cvs diff archivo1 directorio1. Utilice cvs -nq update para conocer los archivos que resultarían afectados por una actualización.

A continuación encontrará algunos de los símbolos de estado que aparecen durante las actualizaciones:

U

Se ha actualizado la versión local. Esto afecta a todos los archivos proporcionados por el servidor que faltan en el sistema local.

M

Se ha modificado la versión local. Si se han producido cambios en el servidor, ha sido posible fusionar las diferencias en la copia local.

P

Se ha revisado la versión local con la versión del servidor.

C

El archivo local está en conflicto con la versión actual del repositorio.

?

El archivo no existe en CVS.

El estado M indica un archivo modificado localmente. Asigne la copia local al servidor o elimine el archivo local y vuelva a ejecutar la actualización. El archivo que falta se recuperará del servidor. Si asigna un archivo modificado localmente y el archivo ha sido modificado en la misma línea y asignado, puede producirse un conflicto, indicado con el símbolo de estado C.

Si se da el caso, busque las marcas de conflicto (»> y «<) en el archivo y decida entre las dos versiones. Dado que esta tarea puede resultar tediosa, puede decidir si desea desechar los cambios, suprimir el archivo local e introducir cvs up para recuperar la versión actual del servidor.

27.4.3. Información adicional

Esta sección simplemente ofrece una breve introducción a las muchas posibilidades de CVS. Encontrará una documentación más completa en las siguientes direcciones URL:

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