Amigo y compa�ero Horacio, muy bueno su mini curso.
Ud. siempre aporta cosas saludables a la lista.
Un abrazo fuerte!
Saludos a toda la lista.
Sebasti�m Augusto La Spina
-Ryflex-
2000 Rosario (Sta Fe)
ARGENTINA
Registered Linux User #147409
----- Original Message -----
From: Horacio Castellini <[EMAIL PROTECTED]>
To: Usuarios Linux Rosario <[EMAIL PROTECTED]>
Sent: Tuesday, November 28, 2000 4:17 PM
Subject: [LUG.ro] CVS, mini curso, para Gary Wallis que lo mira por
correo-e!
>
> 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
>
>