O como manejar CVS (Concurrent Versions System) para organizar
nuestro código.
CVS es un sistema de control de versiones que permite organizar
versiones de ficheros de forma concurrente en un repositorio. Es
una buena herramienta para programar en grupo e ir guardando cada
revision de código. En cualquier distribución linux
esta disponible y tiene incluso clientes windows.
En el mundo unix existen otras herramientas como SCCS (en Sun)
o RSS pero CVS es la más extendida y se utiliza en grandes
repositorios como sourceforge.
COMO ADMINISTRADOR
CVS debe estar instalado. Es un programa muy habitual. probad ejecutando
'cvs' . Lo primero, crear el repository comun:
cvs -d /usr/local/cvsroot init
Con eso creamos el repositorio CVS, y creara el
directorio
/usr/local/cvsroot/CVSROOT
*Una vez instalado el repositorio comun, metemos un proyecto:
Podemos crear un directorio para un proyecto concreto:
Imaginemos que nuestro proyecto se llama wdproject (World Domination Project)
mkdir /usr/local/cvs/wdproject
Y le damos permisos al
usuario de desarrollo en concreto:
chown desarrollo:desarrollo /usr/local/cvs/wdproject
La buena seria crear un grupo Unix para desarrollo, y a
ese grupo darle acceso de escritura el repositorio.
# Con esta orden, metemos
codigo fuente en el repositorio
cvs import -m "Primeras fuentes" wdproject/el_nuevo_remoto el_nuevo start
Donde -m es para poner una etiqueta, el_nuevo un nombre de desarrollo, y start la orden de iniciar el desarrollo (la primera release).
Conviene dar la orden a la "misma altura" de directorios.
Ejemplo:
desde
/home/desarrollo/wdproject/business
a:
/usr/local/cvsroot/wdproject/business
Asi no liamos mucho la cosa.
# Por ultimo podemos pillar el fichero administrativo modules:
cvs checkout CVSROOT/modules
Eso nos descarga el fichero modules, y podemos editarlo poniendo:
business
wdproject/business
Lo guardamos:
cvs commit -m "aņadido nuestro modulo" modules
# En resumen: CREAR UN REPOSITORIO
Imaginemos
que tenemos un contenio comprimido que queremos meter en CVS y crear una carpeta de
trabajo en unix. Estos serian los pasos:
# mkdir /usr/local/cvs/wdproject
# tar zxvf wdproject.tgz
# cd wdproject/
# cvs import -m "Inicio " wdproject wdproject start
# cd ..
# rm -rf wdproject
# cvs checkout wdproject
Con todo eso el proyecto wdproject quedaria en el repositorio y no habriamos creado un directorio de trabajo soncronizado con el
repositorio cvs.
* Como configurar para que pueda accederse remotamente:
Hay otras formas (rsh), en cualquier caso, no olvidar proteger puertos.
Una buena opcion es meterlo a traves de inetd o xinetd.
/etc/inetd.conf:
cvspserver 2401/tcp
/etc/xinetd.d/cvspserver:
service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = root
passenv= PATH
server = /usr/local/bin/cvs
server_args = -f --allow-root=/usr/local/cvsroot pserver
}
COMO DESARROLLADOR
# DESDE windows: Nos instalamos WinCVS un buen programa disponible
by the morro.
En "preferences" ponemos algo asi como: desarrollo@servidor_cvs_remoto:/usr/local/cvsroot
Nos conectamos al repositorio por pserver, o sea, tiene que estar
en marcha el CVS a traves de xinet. Hacemos login, y si devuelve
un codigo 0, es correcto. Despues, hacemos un checkout de todo.
A partir de entoces, todos los ficheros que tenemos y que queremos
ir cambiando con edit. Y una vez terminado los cambios ejecutamos
commit. Con view me parece que bloqueamos el fichero para solo usarlo
nosotros. # Norma general. Una vez hemos montado un repositorio,
conviene "traerselo", para que crearnos un directorio de trabajo
al que se le aņade un directorio "CVS" que es el que controla los
ficheros y las versiones. Si estamos trabajando dentro de ese directorio,
en cada comando cvs se tendra en cuenta el directorio CVS local.
# MODO CONSOLA(para programadores de pelo en pecho) Haciendo commit
del fichero modificado:
$ cvs commit backend.c
o con comentario
$ cvs commit -m "Added an optimization pass" backend.c
#
Pillando la ultima version:
cvs update README
# Con watch. Pillar un fichero -lock- editar, guardas,
y desbloquear.
Desde dentro del directorio de trabajo.
cvs watch on
cvs edit
-editamos el fichero a gusto-
cvs commit -m "Cambio"
cvs watch off
# Parametros para repositorios
remotos:
comando:[[user][:password]@]hostname[:[port]]/ruta/al/repositorio
Por ejemplo: hacer checkout de un modulo llamado foo
cvs -d :ext:bach@faun.example.org:/usr/local/cvsroot checkout foo
# Borrado de ficheros:
Para borrar un fichero del
proyecto se debe eliminar primero en local, y mas tarde en el repositorio. (mejor si
estamos en el directorio de trabajo)
Para borrar del repositorio
cvs remove
cvs commit -m ""
Hasta la próxima.
|