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.
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
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:
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.
La versión local ha sido modificada. Si existían cambios en el servidor, es posible fusionar las diferencias en la copia local.
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.
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.