verificación google

lunes, 15 de octubre de 2018

Servidor para el control de versiones de código fuente

Qué es CVS

Concurrent Versions System o simplemente CVS, es una aplicación que implementa un sistema de control de versiones: mantiene el registro de todo el desarrollo y los cambios en los ficheros (código fuente principalmente, en un único archivo para cada fichero correspondiente),​ que forman un proyecto (de programa) y permite que distintos desarrolladores colaboren. CVS se ha hizo popular en el mundo del software libre. Sus desarrolladores difunden el sistema bajo la licencia GPL.

Su primera versión fue liberada en 1986. Desde 2008 no se publican nuevas versiones.

¿Porqué ahora CVS?

A qué viene ahora hablar de CVS cuando todo el mundo habla de GIT. Pues llevo años trabajando en un proyecto donde históricamente se estaba trabajando con CVS y hace unos días se murió el servidor de desarrollo y hemos tenido de volver a instalar el sistema de control de versiones en una nueva máquina.

Muchos pensareis que sería recomendable abandonar CVS y pasar a GIT, y sí está entre mis prioridades cambiar el sistema de control de versiones. Pero planificado y organizado, no deprisa y corriendo provocado por la caída de un sistema. Lo principal es dejar los sistemas funcionado tal y como estaba funcionando y después planificar las migraciones.

Por otro lado, no creo que se migren todos los proyectos a GIT cuando planifiquemos la migración. Tenemos proyectos que se quedarán en CVS a modo de reliquias.

Instalando servidor CVS en Debian 9 stretch

Para el funcionamiento de un servidor CVS, necesitaremos instalar los paquete cvs y xinetd. Necesitamos el paquete xinetd para permitir publicar nuestro servidor CVS en la red. Con el paquete cvs podríamos trabajar únicamente en local con el control de versiones.
root@miservidordedesarrollo:~# apt-get install cvs 
Reading package lists... Done
Building dependency tree     
Reading state information... Done
Suggested packages:
  mksh rcs
The following NEW packages will be installed:
  cvs
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 2779 kB of archives.
After this operation, 4681 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 cvs amd64 2:1.12.13+real-22+deb9u1 [2779 kB]
Fetched 2779 kB in 0s (9564 kB/s)
Selecting previously unselected package cvs.
(Reading database ... 27062 files and directories currently installed.)
Preparing to unpack .../cvs_2%3a1.12.13+real-22+deb9u1_amd64.deb ...
Unpacking cvs (2:1.12.13+real-22+deb9u1) ...
Setting up cvs (2:1.12.13+real-22+deb9u1) ...
Allowing use of questionable username.
Adding group `_cvsadmin' (GID 111) ...
Done.
Processing triggers for man-db (2.7.6.1-2) ...
root@miservidordedesarrollo:~# apt-get install xinetd
Reading package lists... Done
Building dependency tree     
Reading state information... Done
Recommended packages:
  update-inetd
The following NEW packages will be installed:
  xinetd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 133 kB of archives.
After this operation, 316 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian stretch/main amd64 xinetd amd64 1:2.3.15-7 [133 kB]
Fetched 133 kB in 0s (1978 kB/s)
Selecting previously unselected package xinetd.
(Reading database ... 27137 files and directories currently installed.)
Preparing to unpack .../xinetd_1%3a2.3.15-7_amd64.deb ...
Unpacking xinetd (1:2.3.15-7) ...
Setting up xinetd (1:2.3.15-7) ...
Processing triggers for systemd (232-25+deb9u4) ...
Processing triggers for man-db (2.7.6.1-2) ...

Configurar servidor CVS

Ahora tenemos que configurar nuestro servidor, en primer lugar vamos a crear el directorio donde desplegaremos el repositorio. Realmente no importa demasiado el lugar donde lo despliegues, simplemente tendrás que definir la ruta elegida en los ficheros de configuración.
root@miservidordedesarrollo:~# mkdir /var/lib/cvs   
Tras crear el directorio hay que inicializar el directorio para que el servidor CVS lo interprete como raíz de repositorio de datos.
root@miservidordedesarrollo:~# cvs -d /var/lib/cvs init
Simplemente con estos pasos tendrás funcionando en tu sistema un servidor CVS para el control de versiones de tus proyectos. No obstante únicamente podrás utilizarlo de forma local y no podrás compartir tus proyectos con otros desarrolladores.

Publicar CVS en red con xinetd

Esto es un poco absurdo, en cualquier proyecto necesitarás trabajar con más desarrolladores y necesitarás un servidor para el control de versiones en red para poder de forma fácil trabajar con otros desarrolladores.

Tendrás que crear el fichero /etc/xinetd.d/cvs
root@miservidordedesarrollo:~# nano /etc/xinetd.d/cvs
Escribir el siguiente contenido:
service cvspserver
{
     port = 2401
     socket_type = stream
     protocol = tcp
     user = root
     wait = no
     type = UNLISTED
     server = /usr/bin/cvs
     server_args = -f --allow-root /var/lib/cvs pserver
     disable = no
}
Finalmente reiniciar el servidor xinetd para que coja la configuración definida.
root@miservidordedesarrollo:~# /etc/init.d/xinetd restart

No hay comentarios:

Publicar un comentario