Espero que lo disfruten.
--------------------------------------------------------------------
Mini Curso de CVS (Current Version Systems)
----------------
Si un desarrollo de software en UNIX ha de ser algo serio y no un mero
pasatiempo de aficionados, es menester llevar un control de las versiones
que se desarrollan, m�s a�n si se pretende trabajar en equipos. En el
universo de los S.O. Unix (Linux, BSD, FreeBSD, AIX, SCO, IrIX, Solaris)
existe un invento muy util para permitir guiar el desarrollo de una API,
GUI � SO inclusive el CVS, de poco uso en la Argentina pero no en el resto
del planeta, es el estandar de facto del momento en los grupos de
desarrolladores de software UNIX-semejante. Existen otras como la
ineficiente SCCS y la comercial RCS, pero de todas la GNU CVS ha mostrado
ser mucho m�s eficiente que sus predecesoras.
Un Cacho de Historia
-------------------
CVS nace en 1989, �poca de saqu�os en Rosario, de la mano de Brian
Berliner a partir de unos "script" publicados en Usenet (puerto 119).
Desde entonces, se han sucesido multitud de cambios realizados por un gran
n�mero de empresas pero principalmente por Cygnus Support (www.cygnus.com)
y Cyclic Software (www.cyclic.com). En la practica la totalidad de los
cambios recientes son debidos a Cyclic. Anttiguamente CVS se apoyaba en la
herramienta RCS (Revision Control System), pero por motivos de eficiencia,
se ha eliminado dicha dependencia y CVS ya es parte oficial del proyecto
GNU, adem�s es usado por la mayor�a de los grandes proyectos de soft libre
del mundo (gcc, emacs, guile, gtk, gimp, gnome, linux, etc.).
Primeros pasos con CVS
---------------------
Auque CVS est� dise�ado para soportar desarrollos concurrentes de grandes
sistemas de soft, eso no significa que no est� indicado para tareas
simples, como el desarrollo de nuestros propios API. Desde el punto de
vista del usuario CVS tiene un �nico ejecutable, el 'cvs' que sirve para
realizar todas las operaciones. La interfaz CVS usa comandos en l�nea de
�rdenes.
La filosof�a de trabajo en CVS es la siguiente, existe un ente llamado
"repositor": la cu�l es una jerarqu�a de direct�rios alojada en algun
servidor, que puede ser incluso nuestra propia m�quina, que contiene
m�dulos a disposici�n de los clientes. Otro ente son los "m�dulos": �rbol
de direct�rios que forman parte del repositor, cuenta con un nombre
identificador gracial al cual se puede bajar en forma selectivas fuentes
de �l.
Para crear un repositor en nuestra cuenta-hogar, primeramente debemos
crear el direct�rio repositor, que llamaremos cvsuniverso, con:
mkdir ~/cvsuniverso
luego debemos decirle a CVS donde estar� ubicado dicho repositor, que ser�
el repositor por defecto, con
export CVSROOT=/home/universo/cvsuniverso
cvs init
En ese momento el CVS lanzar� el editor por defecto (por lo general el VI)
para que coloquemos un comentario. Esto se puede evitar con
cvs -m "Experimentos" init
por otro lado si queremos usar otro repositor, diferente del 'por
defecto', siempre debemos colocar como directiva '-d
/..camino/nuevorepositor'.
Una vez creado el repositor debemos crear el m�dulo y colocar en el los
fuentes, supongamos que los fuentes se hallan en el direct�rio "ungs"
entonces
cd ungs
cvs import -m "Cometario bla bla.." ungs ChaosCompany Cosas
a continuaci�n saldr�
N ungs/cuarto.c
N ungs/primer.c
N ungs/quinto.c
N ungs/segundo.c
N ungs/tercero.c
N ungs/s10.c
N ungs/sexto.c
N ungs/s8.c
N ungs/s7.c
N ungs/s9.c
N ungs/lista.h
I ungs/lista.h~
N ungs/ordenar.c
N ungs/complex.c
N ungs/rprintf.c
I ungs/plist.c~
N ungs/plist.c
No conflicts created by this import
Esto nos indica que nuestros fuentes fueron copiados a nuestro repositor
por defecto. Luego ya podemos borrar el direct�rio en cuesti�n. Una
observaci�n, "ungs" es el nombre del direct�rio al cu�l se colocaran los
fuentes, "ChaosCompany" es el nombre del creador y "Cosas" una etiqueta
identificativa.
Los pasos a seguir son ahora
cd ..
rm -r ungs
cvs checkout ungs <---nombre del direct�rio (m�dulo!)
y si todo sali� bien debe aparecer
cvs checkout: Updating ungs
U ungs/complex.c
U ungs/cuarto.c
U ungs/lista.h
U ungs/ordenar.c
U ungs/plist.c
U ungs/primer.c
U ungs/quinto.c
U ungs/rprintf.c
U ungs/s10.c
U ungs/s7.c
U ungs/s8.c
U ungs/s9.c
U ungs/segundo.c
U ungs/sexto.c
U ungs/tercero.c
Adem�s de crearse el direct�rio ungs/ se crea el direct�rio ungs/CVS/ que
contien informaci�n relativa al repositor y estadisticas propias y No debe
ser tocado sino el CVS se desubicar�a.
Supongamos que corregimos los errores en s10.c, podemos guardar nuestro
resultado en el repositor con
cvs commit -m "Bla bla..." s10.c
si por alguna causa borramos alg�n fuente por error basta con ingresar
cvs update
y se recupera. Para poder borrar un fuente completamente basta con
ingresar.
rm s10.c
cvs remove s10.c
cvs commit
Con "commit" se hacen efectivos los cambios en el repositor. Para anexar
un nuevo fuente a nuestro proyecto basta con hacer
cvs add s20.c
cvs commit
En cualquier momento podemos ver el estado de nuestras versiones con
cvs status
En el caso que se quiera trabajar en red hay que tomar el recaudo de
indicarle al CVS que el repositor est� en otra m�quina para ello se
ingresa, supongamos que estamos en el host "oscura" y el servidor cvs est�
en el host "clara".
export CVSROOT=":ext:universo@clara:/usr/local/cvsuniverso"
export CVS_RSH=/usr/local/bin/ssh
en este caso con "ext" se le dice al CVS que usaremos como shell el
OpenSSH, como antes para copiar el m�dulo se hace:
cvs co ungs <------co==checkout! es una abreviatura
universo@clara's password: <-----pide autenticaci�n
/usr/X11R6/bin/xauth: creating new authority file
/home/universo/.Xauthority
cvs server: Updating ungs
U ungs/complex.c
U ungs/cuarto.c
U ungs/lista.h
U ungs/ordenar.c
U ungs/plist.c
U ungs/primer.c
U ungs/quinto.c
U ungs/rprintf.c
U ungs/s10.c
U ungs/s7.c
U ungs/s8.c
U ungs/s9.c
U ungs/segundo.c
U ungs/sexto.c
U ungs/tercero.c
Otro mecanismo es el uso del "rsh" conocido como "pserver" que usa el
puerto 2401, en este caso el repositor por defecto ser�:
export CVSROOT=":pserver:universo@clara:/usr/local/cvsuniverso"
sin ninguna instrucci�n m�s. Las seciones se abren con
cvs login
luego de autentificarse, se cierran con "cvs logout". El mecanismo remoto
permite el uso de grupos de trabajos y operar con las "ramas". Lo normal
cuando se desarrolla un soft es que se ramifique al menos en dos, una que
corresponde a la versi�n estable y otra a la de desarrollo e innovaci�n,
para crear una rama basta con indicar
cvs tag -b borrador_1_0
Cabe observar que se sustituye los puntos '.' por los guiones. La linea
principal no se mescla con la anterior, para poder extraer los fuentes del
repositor basta con introducir
cvs co -r borrador_1_0 borrador <---m�dulo
Para poder integrar los "partches" que estamos desarrollando a la rama
principal lo podemos hacer con la directiva "-j" ("join")
cvs update -j borrador_1_0
cvs commit
Por �ltimo CVS permite etiquetar nuestros proyectos con la directiva "tag"
en el primer desarrollo ser�a
cvs tag ungs_1_0
Para m�s detalles se puede consultar el "man" o en info del CVS, en
internet hay un sin n�mero de ayudas (en ingl�s) sobre el CVS.
--------------------------------------------------------------------------
Dr. Horacio Castellini, Dpto de F'isica, Facultad de Ingenier'ia,
Ciencias Exactas y Agrimensura, Pellegrini 250, 2000 Rosario
Argentina, Usuario Linux Registrado #53602
Correo-e:[EMAIL PROTECTED] ICQ: 52244442