Que es un CVS
El Concurrent Versions System (CVS), también conocido como Concurrent Versioning System, es una aplicación informática que implementa un sistema de control de versiones: mantiene el registro de todo el trabajo y los cambios en los ficheros (código fuente principalmente) que forman un proyecto (de programa) y permite que distintos desarrolladores (potencialmente situados a gran distancia) colaboren. CVS se ha hecho popular en el mundo del software libre. Sus desarrolladores difunden el sistema bajo la licencia GPL.
Como instalarlo
# apt-get install cvsd
Nos preguntará si queremos crear algun repositorio, lo cual simplemente añadirá las lineas [ Repos /XXXX ] al fichero de configuración.
Crear un repositorio
Le decimos al servidor que coga la carpeta "Repositorio" y la use como repositorio.
# echo "Repos /Repositorio" >> /etc/cvsd/cvsd.conf
# cvs -d /var/lib/cvsd/Repositorio init
Añadir usuarios a un repositorio
# cvsd-passwd /var/lib/cvsd/Repositorio NombreDelUsuario
Si queremos que el usuario pueda leer y escribir:
# echo "NombreDelUsuario" >> /var/lib/cvsd/Repositorio/CVSROOT/writers
Si queremos que el usuario solo pueda leer:
# echo "NombreDelUsuario" >> /var/lib/cvsd/Repositorio/CVSROOT/readers
Puesta en marcha
Nos aseguramos que los permisos esten bien:
# chown -R cvsd:cvsd /var/lib/cvsd/
# chmod -R 775 /var/lib/cvsd/Repositorio
Y re-arrancamos el demonio
# /etc/init.d/cvsd restart
Como conectarse y subir algún modulo
Nos conectamos.
# CVSROOT=:pserver:NOMBREDELUSUARIO:CONTRASEí‘A@SERVIDOR:/Repositorio; export CVSROOT
# cvs login
Nos colocamos en la carpeta del proyecto que queremos subir al CVS.
# cd /rutaalproyecto/
# cvs import -m 'Proyecto de Programación' NombreDelProyecto EtiquetaCualquiera IdentificadorDeLaVersion
Y nos desconectamos:
# cvs logout
Ejemplo del funcionamiento
eva:~# echo "Repos /traduccion" >> /etc/cvsd/cvsd.conf
eva:~# cvs -d /var/lib/cvsd/traduccion init
eva:~# cvsd-passwd /var/lib/cvsd/traduccion rael
/usr/sbin/cvsd-passwd: adding user 'rael' to '/var/lib/cvsd/traduccion/CVSROOT/passwd'
Enter new password:
Retype new password:
eva:~# echo "rael" >> /var/lib/cvsd/traduccion/CVSROOT/writers
eva:~# chown -R cvsd:cvsd /var/lib/cvsd
eva:~# chmod -R 775 /var/lib/cvsd/traduccion
eva:~# /etc/init.d/cvsd restart
Restarting cvs pserver chroot wrapper: cvsd.
eva:~# CVSROOT=:pserver:rael:**********@localhost:/traduccion; export CVSRO
eva:~# cvs login
Logging in to :pserver:rael@localhost:2401/traduccion
eva:~# cd /home/rael/avidemux/
eva:/home/rael/avidemux# cvs import -m 'Traduccion colaborativa de aviDemux' TraduccionAvidemux Esp version1_0
N TraduccionAvidemux/es.po
No conflicts created by this import
eva:/home/rael/avidemux# cvs logout
Logging out of :pserver:rael@localhost:2401/traduccion
Como usarlo desde Terminal
Para la traducción podemos usarlo mediante terminal.
eva:~# CVSROOT=:pserver:rael:**********@localhost:/traduccion; export CVSRO
eva:~# mkdir test
eva:~# cd test/
eva:~/test# cvs login
Logging in to :pserver:rael@localhost:2401/traduccion
eva:~/test# ls
eva:~/test# cvs checkout .
cvs checkout: Updating .
cvs checkout: Updating CVSROOT
U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/postadmin
U CVSROOT/postproxy
U CVSROOT/posttag
U CVSROOT/postwatch
U CVSROOT/preproxy
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg
cvs checkout: Updating TraduccionAvidemux
U TraduccionAvidemux/es.po
eva:~/test# ls
CVS CVSROOT TraduccionAvidemux
En este momento, nuestra carpeta contiene todo lo del servidor.
eva:~/test# head -3 TraduccionAvidemux/es.po
# translation of es.po to Castellano
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
eva:~/test# tail -3 TraduccionAvidemux/es.po
"Puede necesitar copia inteligente.\n"
" ¿Activar?"
eva:~/test# echo "Prueba de que se actualiza" >> TraduccionAvidemux/es.po
eva:~/test# tail -3 TraduccionAvidemux/es.po
" ¿Activar?"
Prueba de que se actualiza
eva:~/test# cvs commit
cvs commit: Examining .
cvs commit: Examining CVSROOT
cvs commit: Examining TraduccionAvidemux
Log message unchanged or not specified
a)bort, c)ontinue, e)dit, !)reuse this message unchanged for remaining dirs
Action: (continue)
/traduccion/TraduccionAvidemux/es.po,v <-- TraduccionAvidemux/es.po
new revision: 1.2; previous revision: 1.1
Ahora vamos a volver a cargar el archivo del servidor.
eva:~/test# cvs co TraduccionAvidemux/
cvs checkout: Updating TraduccionAvidemux
U TraduccionAvidemux/es.po
eva:~/test# head -3 TraduccionAvidemux/es.po
# translation of es.po to Castellano
# This file is distributed under the same license as the PACKAGE package.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
eva:~/test# tail -3 TraduccionAvidemux/es.po
" ¿Activar?"
Prueba de que se actualiza
eva:~/test#