CVS sobre Windows

0
33164

CVS sobre Windows

Índice de
contenido

Introducción……………………………………………………………………………………………………………….
1

¿Qué es el
repositorio
CVS?………………………………………………………………………………..
1

Instalación del repositorio
en el servidor de
ficheros………………………………………………………
2

Requisitos para la
instalación…………………………………………………………………………………..
2

Instalación de
CVSNT…………………………………………………………………………………………….
2

Configuración de Firewalls y
Windows
XP……………………………………………………………….
4

Configuración del
repositorio
raíz…………………………………………………………………………….
4

Seguridad en los
repositorios…………………………………………………………………………………..
6

Otras configuraciones del
servidor……………………………………………………………………………
6

Instalación del
WinMerge……………………………………………………………………………………………
8

Instalación del cliente
simple
TortoiseCVS………………………………………………………………….
12

Arrancar el
TortoiseCVS……………………………………………………………………………………….
14

Comprobación de que nos
conectamos al
CVS………………………………………………………….
18

Instalación de WinCVS
2.0…………………………………………………………………………………….
19

Actualización de la carpeta
de
trabajo…………………………………………………………………….
26

Reinicialización de un
repositorio…………………………………………………………………………..
28

Reinicialización completa
del
repositorio………………………………………………………………..
30

Reinicialización del
repositorio utilizando módulos ya
creados…………………………………. 31

Acceso al repositorio mediante
pserver…………………………………………………………………..
32

Actualización de la lista de
extensiones
binarias………………………………………………………
32

Tareas de
mantenimiento……………………………………………………………………………………………
33

Copia de seguridad del
repositorio…………………………………………………………………………
33

Conclusión……………………………………………………………………………………………………………….
33

 

 

Introducción

Durante nuestro trabajo habitual con
documentación y código
fuente nos encontraremos con el problema de cómo guardar
todos los ficheros de
manera que los tengamos ordenados, y con un control sobre las versiones
de los
mismos. Para solucionar este problema existe multitud de programas que
gestionan el control de versiones. De entre todas las aplicaciones, la
más
popular sin duda es el CVS, que significa Concurrrent Version Control.

 

El CVS es un sistema cliente/servidor
para el control de
versiones, cuya principal característica es que fue
diseñado para el trabajo
concurrrente de equipos de programadores. Aquellos que están
acostumbrados a
trabajar con aplicaciones no concurrrentes como el Visual Source Safe
encontrarán  este sistema novedoso (hay que ser
sinceros, y al principio no se
fiarán de él).

La potencia de CVS radica en que
permite a dos programadores
trabajar con el mismo código fuente sin usar bloqueo de
ficheros… Para ello
deben cumplirse dos premisas:

      
Que la organización del
código fuente sea inteligente

      
Que los ficheros de código fuente
no sean muy grandes (evitar
ficheros con cientos de funciones…)

Si se dan estas dos
características probablemente en muy
pocas ocasiones se necesitará resolver conflictos en el
código fuente, que son
situaciones en las que el CVS detecta que dos programadores han
modificado
exactamente la misma función.

¿Qué es el
repositorio CVS?

Un repositorio CVS es un
almacén de ficheros que utiliza el
software Concurrrent Version System para su gestión. Para
Windows, existe la
versión específica CVSNT, que se instala como un
servicio Windows. CVS utiliza
una estructura de repositorios y módulos donde se almacenan
los ficheros.

 

¿Qué
diferencia CVS de otros
sistemas de control de versiones?

CVS está
diseñado para el trabajo concurrente de los equipos
de desarrollo. En CVS por defecto los desarrolladores NO bloquean los
ficheros
con los que se trabaja, sino que simplemente editan los ficheros y
luego suben
los cambios. Aquí aparece una pregunta clara: ¿y
si dos desarrolladores
modifican el mismo fichero? CVS tiene los siguientes mecanismos:

  • Lo primero que intenta es hacer
    una mezcla inteligente de los ficheros. Normalmente dos desarrolladores
    no tocan la misma parte del fichero simultáneamente, por lo
    que CVS compara ambos ficheros y completa o sustituye las partes que
    han cambiado.
  • Si CVS detecta un conflicto, el
    segundo desarrollador será informado mediante un marcaje del
    código y no puede subir ese fichero. En este caso, el
    desarrollador debe editar el código y luego subir el fichero
    definitivo.
  • Si además huimos de los
    ficheros de gran tamaño (olvida esos ficheros con cientos de
    funciones), la probabilidad de conflicto se reduce. Normalmente pocas
    veces el CVS informa de conflictos (no tengo estadísticas,
    pero normalmente en un año de desarrollo no sueles encontrar
    más de cuatro o cinco conflictos…., que es muy
    asumible)
  • Y por último recuerda
    siempre antes de hacer “commit”, haz
    “update”.

 

El SVN
como sucesor de CVS

Y por último, hay que
comentar el nuevo sistema de control
de versiones que parece que se está imponiendo: SVN o
“Subversión”. Es muy
parecido a CVS, pero las diferencias fundamentales son:

§      
Los números de versión
son incrementales para todo el
repositorio, a diferencia de CVS, que son de cada fichero.

§      
Lleva control de los cambios en la estructura
de ficheros, como
operaciones de movimiento.

§      
Puede descargarse en local del repositorio,
con lo que se puede
trabajar haciendo históricos fuera de línea.

§      
Trabaja mejor con los ficheros binarios.

Instalación
del repositorio en el servidor de ficheros

Requisitos
para la instalación

Para la instalación se
necesita lo siguiente:

  • Un servidor Windows 2000, XP o
    2003.
  • Una carpeta en el servidor
    con  espacio suficiente para albergar los archivos del
    repositorio
  • El software de servidor CVSNT. Se
    ha probado la versión cvsnt-2.5.03.2260.msi
  • El software de cliente
    TortoiseCVS, Se ha probado la versión TortoiseCVS-1.8.22.exe.
  • El software de cliente WinCVS. Se
    ha probado la versión WinCvs2_0_2-4.
  • El software de
    comparación Winmerge. Este software nos permite comparar
    versiones de ficheros desde el TortoiseCVS.

 

Instalación
de CVSNT

Lo primero es crear
las carpetas C:\RepositorioCVS y C:\CVSTemp, que serán
utilizadas para el
repositorio inicial y la carpeta temporal.

El sistema debe
tener acceso a dichas carpetas, amén de los usuarios que
deben acceder a ellas.
Comenzamos dando permisos a «Todos», «Sistema» y
«Administradores», y luego lo restringiremos si hace falta.

 

 

Arrancamos el
programa de instalación. Tras la pantalla de bienvenida
pulsamos “Next”

 

 

Aceptamos la
licencia GNU y pulsamos “Next”

 

Seleccionamos
la instalación completa

 

 

Finalizamos la
instalación Reiniciamos el equipo y abrimos el panel de
control de CVSNT (en el
menú de programas)

.

 

Paramos los
servicios de CVSNT con los botones de “Stop”.

 

Configuración
de Firewalls y Windows XP

Si estamos
utilizando un Firewall, como el Firewall que viene con Windows XP, hay
que
recordar abrir los puertos siguientes:

·      
El
servicio cvsservice.exe, que está en la carpeta de CVSNT
utiliza el puerto 2401

·      
El
servicio cvslock.exe, que está en la misma carpeta, utiliza
el puerto 2402

·      
Dependiendo
del Firewall utilzado el procedimiento para abrir los puertos
será diferente.

 

Y por cierto, también
hay que tener cuidado con todos
los software de seguridad: antivirus, firewalls personales, etc. Si
tienes
problemas, prueba a deshabilitarlos temporalmente.

 

Configuración
del repositorio raíz

Antes de comenzar a configurar el
servidor CVS conviene
crear dos carpetas: RepositorioCVS y TempCVS. Yo las voy a crear en mi
partición de datos, la D. Hay que asegurarse de que el
servicio CVS tiene los
permisos necesarios para acceder a dichas carpetas. Conviene dar al
sistema
(que es la cuenta con la que corre el servicio y a Administradores
control
total. Además tenemos que darles los permisos adecuados a
los usuarios sobre
ellas. Daremos permiso de cambio sobre la carpeta TempCVS y
sobre  la del
repositorio. Luego en los módulos podremos dar permisos
más específicos.

 

Nota importante:
el nombre de carpeta «CVS»
está reservado dentro del sistema CVS. No usarlo para
nueastras carpetas.

Otra nota importante:
CVS viene del mundo UNIX, que
es alérgico a las carpetas y ficheros con espacios en blanco
en sus nombres.
Aunque CVSNT los puede manejar, si vas a usarlo para proyectos en que
se usen
herramientas Unix/linux, evítalo.

 

Si hemos creado la
carpeta “D:\RepositorioCVS”, detectará
que no está inicializada y nos permite
inicializarla.

 

 

Nos
vamos a la pestaña de “Repository
configuration”

 

Ha detectado que la
carpeta existe pero que no es un repositorio CVS válido, ya
que no tiene la
estructura CVS típica. Nos pide autorización para
crear dicha estructura. Aceptamos.

 

 

Pulsamos

 

 

En la ventana de
repositorios aparecerá la línea correspondiente
al repositorio recién creado.

 

Seguridad
en los repositorios

CVSNT utiliza el
sistema de seguridad de NTFS. Para que el acceso remoto funcione sin
problemas,
debes darle los permisos adecuados a las carpetas. Para ello sigue las
siguientes recomendaciones:

·      
La
carpeta de ficheros temporales de CVSNT no debe ser la misma que la del
sistema, si vas a arrancar el servicio CVSNT con la cuenta del sistema
(que es
la configuración por defecto de CVSNT). Create
una carpeta separada, por
ejemplo C:\CVSTEMP
y dale permisos de control
total al sistema y al administrador

·      
Asegúrate
de que los usuarios tienen los permisos adecuados en las carpetas de
los
repositorios. El sistema debe tener control total de los repositorios.

 

Otras
configuraciones del servidor

Podemos acceder a otras opciones en
las demás pestañas de
CVSNT

 

 

Hay que recordar
cambiar la
carpeta de ficheros temporales.

 

 

 

En principio no
modificamos más cosas. Arrancamos nuestro servidor CVS.

 

Instalación
del WinMerge

El Winmerge es un programa que nos
ayudará a comprobar
versiones de documentos de texto. Si lo instalamos antes que el
TortoiseCVS, este lo detectará y lo utilizará. Su
instalación es muy simple. Arrancamos el
instalador WinMerge-2.4.0-Setup.exe

 

 

Pulsamos «Siguiente»

 

 

Pulsamos «Siguiente»

 

 

Pulsamos «Siguiente»

 

 

Pulsamos «Siguiente»

 

 

Pulsamos «Siguiente»

 

 

Pulsamos «Siguiente»

 

 

Pulamos «Instalar»

 

 

Pulsamos «Siguiente»

 

 

 

Y pulsamos
“Terminar”. El programa queda instalado.

 

Normalmente el Winmerge lo vamos a
ejecutar automáticamente
desde el TortoiseCVS, para comparar dos versiones del fichero. Su uso
es muy
intuitivo, por lo que no lo comentaré.

Instalación
del cliente simple TortoiseCVS

Ejecutamos el programa de
instalación, en mi caso el
TortoiseCVS-1.8.22.exe.

 

 

Pulsamos «Next»

 

 

 

 

Pulsamos «Next»

 

 

Pulsamos «Next»

 

 

 

 

 

 

Pulsamos
«Finish»

 

Arrancar el
TortoiseCVS

Arrancamos el programa

 

 

Ejecutar el
instalador y seleccionar la opción

Se omiten las
pantallas por ser una instalación típica.

 

Una vez instalado,
abrir su panel de configuración desde el menú de
inicio.

 

Lo ponemos en
cristiano…

 

 

Ahora creamos la
carpeta local C:\Sandbox, que será la que utilicemos para el
desarrollo y
pruebas en local

 

Sólo nos falta
añadir las opciones detalladas de CVS al explorer:

 

 

Podemos
añadir a la
vista detallada del Explorer un montón de opciones CVS.

 

 

Comprobación
de que
nos conectamos al CVS

 

 

Abrimos el explorer
en la carpeta C:\Sandbox, y con el botón derecho sobre el
icono de la carpeta
pulsamos en «CVS Obtener…».

 

Configuramos el
protocolo, servidor, puerto, usuario.

·      
Como
servidor, el nombre del servidor, como protocolo SSPI.
También podemos usar el
pserver.

·      
Como
usuario usamos el de Windows, que debe existir como usuario local en el
servidor.

·      
Como
Módulo elegimos CVSROOT, que es el directorio de control del
repositorio.

 

 

Tras descargarse los
ficheros
la carpeta C:\Sandbox\CVSROOT contiene una copia de la carpeta CVSROOT
del
repositorio.

Además los
iconos
del Explorer muestran el grado de actualización CVS.

Vemos la estructura
típica de un módulo CVS, en el que los datos del
módulo CVSROOT son simplemente
la confiuguración _CVS del repositorio.

 

 

 

 

Instalación
de WinCVS 2.0

Este cliente es
mejor para hacer las tareas de administración del repositorio

su
instalación es
simple. Si lo vamos a instalar en el servidor que contiene CVSNT, hace
falta la
instalación que no contiene al CVSNT.

Además
deberemos
tener instalado previamente el Python para algunas funciones, por
ejemplo para
crear el CVS Log.

 

 

Pulsamos
«Si» y continuamos

 

 

Acepamos todas las
pantallas de instalación con sus opciones por defecto

 

 

Tras finalizar y
arrancar el WinCVS, hay una opción que nos indica que
debemos instalar Python
para obtener el soporte de macros. Por ahora no lo instalamos

 

 

Dado que el panel
de exploración abre demasiada información,
configuramos la vista para poder.
Para ello vamos al menú «View -> Browser Location
-> Change» y
seleccionamos el directorio local de SandBox

 

 

 

·que
crearemos en
el repositorio como un módulo.

Para crear un
módulo, para albergar un proyecto, creamos un
módulo con el nombre del
proyecto.

 

Como nos interesa
que el módulo plantilla sea una carpeta del Sandbox, creamos
la carpeta
C:\Sandbox\Plantilla primero

Vamos a crear un
documento de ejemplo y una carpeta de ejemplo: creamos dentro de la
carpeta
Sandbox\Plantilla el documento “Midocumento.txt” y
la carpeta “Documentos”

 

Ahora pulsando con
el botón derecho en ella, elegimos «CVS ->Crear un
nuevo módulo».
Si por error pulsamos sobre c:\sandbox, se creará la
estructura cvs en el raíz
del sandbox, que no nos interesa, ya que queremos que el sandbox
albergue otros
proyectos

 

 

Ajustamos el
CVSROOT para que el final de la ruta sea nuestro repositorio
/RepositorioCVS/,
poniendo «/RepositorioCVS/» como carpeta del repositorio, respetando
las barras.

 

Ahora el
repositorio c:\RepositorioCVS contiene las carpetas CVSROOT y
Plantilla. Dentro
de Plantilla está la carpeta de control CVS, En el Sandbox
se ha creado en la
carpeta Plantilla la carpeta CVS.

En el repositorio
se ha creado la carpeta Plantilla, pero todavía no contiene
los ficheros
“Midocumento.txt” ni la carpeta
“Documentos”. Ahora nos  ponemos en
c:\Sandbox\plantilla y pulsamos en «CVS Añadir contenido».
Esta
opción está disponible por contener la carpeta
sandbox\plantilla\CVS.

 

 

Activamos
la casilla “Mostrar elementos en subcarpetas” y
pulsamos Aceptar.

Ha creado en
repositoriocvs la carpeta Documentos, y dentro de ella, la carpeta CVS

No ha subido el
documento «midocumento.doc». veamos que ocurre.

Ahora pinchamos en
sandbox\plantilla y elegimos «CVS Confirmar»

 

 

Nos
solicita subir el primer documento «midocumento.txt»

Aceptamos, y en
RepositorioCVS/Plantilla se crea el doucmento «midocumento.txt»

 

Actualización
de la carpeta de trabajo

 

Veamos ahora la
actualización del sandbox, con una serie de
módulos que vamos a cargar desde el
CVS.

 

Partimos
de un Sandbox limpio

Pinchamos en
Sandbox y pulsamos «CVS Obtener módulo»

 

 

Pulsamos
“Aceptar”

 

 

Se ha creado la
carpeta Sandbox\plantilla y ahí mete el contenido
actualizado del repositorio.
En el explorer la carpeta plantilla aparece identificada como carpeta
CVS

 

 

 

Reinicialización
de un repositorio

 

Ahora vamos a
borrar un repositorio y lo vamos a rehacer, sin borrar el contenido del
RespositorioCVS

 

En
el repositorio tenemos dos carpetas: CVSROOT y Plantilla

 

En primer lugar,
aramos el servidor CVSNT con el panel de control de CVSNT

 

 

 

Ahora borramos

 

 

Borramos el
repositorio con Repository configuration -> Delete (marcando
primero el
repositorio RepositorioCVS

 

Ahora lo creamos de
nuevo con "Add"

 

 

y nos vuelve a
quedar la pantalla de repositorios como al principio como antes

 

 

 

Si hacemos desde
Sandbox "CVS Obtener", el cuadro de diálogo es capaz de leer
correctamente los módulos que hay en el repositorio, que son
Plantilla y
CVSROOT

 

Reinicialización
completa del repositorio

 

Ahora tenemos en el
repositorioCVS las carpetas CVSROOT y Plantilla

 

Paramos el servicio
CVSNT y borramos la carpeta RepositorioCVS

La carpeta
Plantilla, en vez de borrarla, la sacamos temporalmente a otro
directorio.
Dejamos la carpeta RepositorioCVS limpia y borramos el repositorio y lo
volvemo
a añadir. Ahora al añadir la carpeta
RepositorioCVS limpia como repositorioCVS,
lo primero que nos pide CVSNT es permiso para inicializarla

 

 

contestamos que

y queda inicializado

 

Reinicialización
del repositorio
utilizando módulos ya creados

En este caso vamos
a limpiar completamente la carpeta RepositorioCVS y antes de crear la
raíz CVS
vamos a precargar en la carpeta RepositorioCVS la carpeta Plantilla,
que
teníamos de una copia anterior del repositorio

 

Para
ello paramos el servidor CVSNT en el panel de control de CVSNT

Eliminamos el
repositorioCVS en el panel de control de CVSNT

Borramos el
contenido de C::\RepositorioCVS

Copiamos la carpeta
Plantilla desde la carpeta de copia de seguridad a C:\RespositorioCVS

 

 

Y ahora creamos el
repositorio
RepositorioCVS en el panel de control de CVSNT

 

 

CVSNT detecta que
la carpeta del repositorio no contiene la estructura CVS, ya que le
falta
CVSROOT. Nos pide inicializarla. Aceptamos.

 

Se
ha creado la carpeta CVSROOT en c:\RepositorioCVS y no se ha borrado la
carpeta
Plantilla.

Veamos si ahora se
ven correctamente los dos módulos (Plantilla y CVSROOT)

Pulsamos en Sandbox
"CVS Obtener" y nos aparece el cuadro de diálogo de "CVS
Obtener
módulo”

 

 

Si ahora pulsamos
el botón "Obtener lista", el desplegable de
módulos muestra los
nombres de ambos módulos

 

Acceso al
repositorio mediante pserver

 

Si queremos acceder
al repositorio mediante pserver, hay que asegurarse de que el usuario
tenga
acceso a la carpeta del repositorio. Si no se dice lo contrario, el
usuario
utilizado para conexión debe coincidir con un usuario local
del servidor
Windows.

 

Actualización
de la lista de extensiones binarias

En la carpeta
CVSROOT del repositorio hay unfichero llamado cvswrappers. Uno de los
usos de
este fichero es indicar el tipo de extensión que es binaria.
CVS utiliza las
extensiones definidas en este fichero para distinguir los ficheros
binarios
cuando se realizan las operaciones de actualización del
repositorio.

 

Para actualizar el
fichero:

  1. Obtener la carpeta
    CVSROOT en la Sandbox local, con “CVS Obtener”
  2. Editar el archivo
    cvswrappers
  3. Pegar lo siguiente:

 

*.cab -k 'b'

*.class
-k 'b'

*.doc
-k 'b'

*.dll -k 'b'

*.exe
-k 'b'

*.exp
-k 'b'

*.gif -k 'b'

*.gz -k 'b'

*.jar -k 'b'

*.jpg -k 'b'

*.jpeg -k 'b'

*.lib -k 'b'

*.msi
-k 'b'

*.mso
-k 'b'

*.pfw
-k 'b'

*.png
-k 'b'

*.ppt
-k 'b'

*.sit
-k 'b'

*.tar
-k 'b'

*.tlb
-k 'b'

*.vsd
-k 'b'

*.xls
-k 'b'

*.wmz
-k 'b'

*.zip
-k 'b'

 

  1. Actualizar el repositorio.

Tareas de
mantenimiento

 

Copia de
seguridad del repositorio

 

Aquí va el script de
parada del servicio CVSNT y los pasos
necesarios para realizar la copia de seguridad. En principio es una
copia de
ficheros.

 

Por ejemplo:

 

net stop cvs

xcopy
c:\cvsrepo \\server\cvsbackup /Q /S
/C /H /R /O /Y

net
start cvs

 

o si la máquina tiene
instalado el software de cygnus:

 

net
stop cvs

TODAY=date
+%Y-%m-%d`

tar c
/cygdrive/c/cvsrepo | bzip2 -9 >
/cygdrive/shared-drive-lettre/cvsbackup-${TODAY}.tar.bz2

net start cvs

Conclusión

El entorno de control de versiones
CVS permite crear un
almacén centralizado de código fuente
y   de ficheros con  un avanzado control
de versiones. La instalación de un servidor CVS mediante la
aplicación CVSNT
es muy sencilla. La administración de dicho servidor
mediante varios clientes
gratuitos nos permitirá sacarle pronto todo el partido a
nuestro servidor CVS
y tener bajo control las versiones de nuestro proyecto. Existen otros
sistemas
de control de versiones, pero las características
fundamentales de CVS son:

·      
El
servidor para Windows es muy fácil de instalar. Para los
unix hay varios
servidores disponibles, incluyendo una versión del CVSNT.

·      
Como
cliente CVS podemos usar el TortoiseCVS, el WinCVS o el incluido en los
IDEs,
como el plugin estándar de Eclipse

·      
La
administración del servidor es muy sencilla, ya que
básicamente se trabaja
sobre ficheros en el disco.

Dejar respuesta

Please enter your comment!
Please enter your name here