Correo | Contáctenos | Extranet
Búsqueda     Buscar: powered by Google.com  
 
 
 

Configuración del servidor de CVS

Por: Andrés Cifuentes [Director de Proyectos]

Dentro del proceso interno de organización de procesos y documentación con miras a la certificación, decidimos revisar el area de administración de configuración (CM) y más concretamente el proceso de control de versiones existentes. Una de las decisiones que tomamos fue separar las versiones en dos repositorios diferentes tal como lo proponen los estudiosos del tema, asi que el primer paso para esto es instalar el servidor de cvs en las maquina de desarrollo y preproducción para tener alli los CVS respectivos. 


Descripción del sistema:

Actualmente en la empresa tenemos dos servidores dedicados para los procesos de desarrollo y pre-producción, son servidores pequeños con configuraciones modestas pero suficientes para estas labores.

Descripción del servidor
Desarollo Pre-Producción
Server

Dell SC420
Pentium IV 800 Mhz
1 GB RAM
80GB SATA

Dell PE 1300
Dual Pentium III 550 Mhz
512 (ECC) SDRAM
13 GB 10K RPM SCSI
Sistema Operacional Fedora Core 3 Linux Red Hat Linux release 7.3 (Valhalla)
Conexion Interna Interna - Externa

Procedimiento:

El primer paso es obtener e instalar el RPM en caso que no esté ya instalado en la distribución que vamos a usar, para este caso manejo dos opciones diferentes, en el Redhat 7.3 uso rpm, mientras que en la distribución de Fedora core 3 uso yum.

1a. Instalar el rpm (RedHat 7.3)
[root@dali /rpms]# rpm -Uvh cvs-1.11.1p1-8.7.i386.rpm

1b. Instalar o actualizar usando yum
[root@goya ~]# yum install cvs

Una vez instalado reviso la documentación del utilitario para saber cómo se usa
[root@goya ~]# man cvs



En este caso el manual del cvs se extiende demasiado en los comandos y opciones que tiene para usarse por linea de comandos y esto hace que sea de poca ayuda en el proceso de administración del CVS, como en realidad vamos a usar un cliente gráfico como WinCVS o TortoiseCVS estas opciones son  mas faciles de explorar. Información más interesante se encuentra en los ducumentos asociados al paquete, en donde podemos ver un capítulo especial para la parte de administración, por lo menos en lo referente a la inicialización y configuracion del repositorio, para consultar la documentación usamos el lector info.
[root@goya ~]# info -f cvs

 Bien, luego de leer la documentacion, consultar varios sitios de CVS, Fedora y Redhat creo que estamos listos para la configuracion del servidor, los pasos son :

  1. Configurar el listener en xinetd
  2. Definir la ubicación del CVSROOT
  3. Inicializar el repositorio
  4. Modificar los archivos de configuración
  5. Realizar pruebas de conexión
  6. Modificar algo de nuestro módulo

2. Configurar
Para configurar el listener en el xinetd creamos el archivo cvspserver en /etc/xinet.d/
[root@goya xinetd.d]# pwd
/etc/xinetd.d
[root@goya xinetd.d]# vi cvspserver



configurar la variable el home del cvs para los usuarios en caso que lo vayan a usar por linea de comandos en la misma maquina, cosa que aunque no lo crean es util.
[root@goya profile.d]# pwd
/etc/profile.d
[root@goya profile.d]# vi cvs.sh

Revisamos que la variable exista en el ambiente
[root@goya ~]# env

Si no existe debemos logearnos de nuevo o ejecutar el cvs.sh que acabamos de crear. Ahora verificamos que el directorio exista e inicializamos el repositorio y configuramos los permisos de acceso.

[root@goya ~]# mkdir $CVSROOT
[root@goya ~]# cd $CVSROOT
[root@goya cvsroot]# pwd
/var/cvs/cvsroot
[root@goya cvsroot]# chmod -R 775 $CVSROOT
[root@goya cvsroot]# chgrp -R desarrollo $CVSROOT
[root@goya cvsroot]# touch $CVSROOT/locks
[root@goya cvsroot]# cvs init

El resultado de la inicialización es que se crea el directorio CVSROOT donde se encuentran los archivos de configuración, que para editarlos debemos usar cvs y por tanto sera la primera prueba de que está funcionando localmente el servicio.
[root@goya cvsroot]# ls -la
total 12
drwxrwxr-x  3 root users 4096 May 27 10:49 .
drwxr-xr-x  3 root root  4096 May 27 10:46 ..
drwxrwxr-x  3 root root  4096 May 27 10:49 CVSROOT

Nos pasamos a un directorio de trabajo, usando otro usuario pues root no puede hacer commit en el repositorio, en este caso usaré el home de mi usuario, le hacemos checkout al "modulo" CVROOT
[AndresC@goya ~]# cd
[AndresC@goya ~]# cvs checkout CVSROOT
cvs checkout: Updating CVSROOT
U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg

Ahora editamos la configuración que está en CVSROOT/config, basicamente nos interesa habilitar la seguridad del servidor, habilitando la linea:

SystemAuth=yes

Luego hacemos commit en el repositorio para que tome los cambios en la configuración.[AndresC@goya ~]$ cvs commit CVSROOT/config
Checking in CVSROOT/config;
/var/cvs/cvsroot/CVSROOT/config,v  <--  config
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database

Reiniciamos el servicio xinetd para que tome el nuevo archivo de configuración
[root@goya ~]# service xinetd stop
Stopping xinetd:                                           [  OK  ]
[root@goya ~]# service xinetd start
Starting xinetd:                                           [  OK  ]

Desde otra máquina probamos que podemos llegar al puerto del servidor de cvs, en caso que no podamos establecer la comunicación es probable que algun firewall o herramienta similar esté bloqueando el acceso al puerto.
[root@dali /root]# telnet goya.eforcers.com 2401
Trying 192.168.123.30...
Connected to goya.eforcers.com.
Escape character is '^]'.

^C
Connection closed by foreign host.

3. Probar y personalizar la configuracion
Con todo configurado podemos hacer una prueba con un cliente gráfico desde nuestra máquina haciéndole checkout al mismo modulo de configuración para personalizar aun mas la configuración del servidor de CVS.

Imagen 5

El resultado es la extracción de una copia del modulo en nuestro directorio

Imagen 6

Una de las primeras cosas que hacemos es personalizar como debe manejar el cvs ciertos tipos de archivos de acuerdo a si son binarios o son texto, pues cvs está optimizado para identificar diferencias entre archivos de texto, permitiendo múltiples operaciones para manejar estos archivos cuando se presentan conflictos. Esta configuracion se realiza en el archivo cvswrappers, incluiré algunas de las extensiones que nosotros usamos por ser una empresa de desarrollo web.

# For example:
*.gif -k 'b'
*.bmp -k 'b'
*.psd -k 'b'
*.png -k 'b'
*.ico -k 'b'
*.class -k 'b'
*.jar -k 'b'
*.zip -k 'b'
*.avi -k 'b'
*.mov -k 'b'
*.jpg -k 'b'
*.mpg -k 'b'
*.swf -k 'b'
*.pdf -k 'b'

Hacemos commit al repositorio

Imagen 7

Verificamos el resultado de la operación usando el log del cliente

Checking in cvswrappers;
/var/cvs/cvsroot/CVSROOT/cvswrappers,v  <--  cvswrappers
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database

Success, CVS operation completed 



Modificaciónes, Revisiónes y Ajustes:

Adiconalmente a los que hemos visto, yo recomiendo definir quiénes tienen permiso a hacer commit, quiénes a hacer checkout, sobretodo para reforzar las políticas de Administración de la configuración, así,  en el repositorio de desarrollo permitiré hacer commit a los integrantes del grupo de desarrollo, pero en el repositorio de pre-producción permitiré hacer commit sólo a los integrantes del comité de Administración de configuración. Estas opciones se configuran en dos archivos que se deben adicionar al CVSROOT, writers y readers. Cada archivo debe contener un nombre de usuario por linea.

Conclusión:

CVS es una herramienta muy poderosa para manejar el control de versiones al interior de una empresa, la configuración inicial de un repositorio es muy sencilla y lineal, sin embargo aprovechar todas las ventajas que provee cvs no es algo que sea tan sencillo y requerirá estudio dedicado y pruebas.

Adicionalmente existen varios plugins o extensiones que permiten adicionar funcionalidad al CVS, por ejemplo existe una que permite graficar las lineas de código con respecto al tiempo, obteniendo estadísticas por desarrollador y proyecto (cvschangelogbuilder). Estos datos pueden ser muy interesantes para medir y todos sabemos que: "lo que no se puede medir ... no se puede mejorar".

Sitios de referencia:
http://www.cvshome.org/docs/manual/ Manual [Sitio Oficial]
http://www.delorie.com/gnu/docs/cvs/cvs_toc.html Manual [CVS--Concurrent Versions System v1.11.1.1]

Fecha Ultima actualizacion: 28/05/2006

 
Cra 12 No. 90-20 Of 301 - Tels: 622 83 20/ 622 83 30 - Fax: 622 82 75 Bogotá-Colombia
© Copyright 2006 Todos los derechos reservados. Eforcers ltda.
[www.eforcers.com]