Node:Usando alarmas durante el desarrollo, Next:, Previous:Habilitar alarmas en el repositorio, Up:Alarmas (CVS como telefono)



Usando alarmas durante el desarrollo

Primero, un programador obtiene una copia de trabajo y se añade a la lista de vigilantes para alguno de los ficheros del projecto:

floss$ whoami
jrandom
floss$ cvs -q co myproj
U myproj/README.txt
U myproj/foo.gif
U myproj/hello.c
U myproj/a-subdir/whatever.c
U myproj/a-subdir/subsubdir/fish.c
U myproj/b-subdir/random.c
floss$ cd myproj
floss$ cvs watch add hello.c
floss$

La última orden, cvs watch add hello.c, indica a CVS que nofifique a jramdom si alguien empieza a trabajar en hello.c. O sea que añade jrandom a la lista de alarma de hello.c. Para que CVS pueda notificar tan pronto como sea posible que un fichero se va a editar el usuario tiene que indicárselo a CVS mediante la orden cvs edit y el nombre del fichero. CVS no tiene otro modo de saber cuando alguien empieza a trabajar en un fichero. Una ver que se ha obtenido una copia, CVS no es normalmente invocado hasta la siguiente actualización o entrega, la cual sucede después de que el fichero se haya editado:

paste$ whoami
qsmith
paste$ cvs -q co myproj
U myproj/README.txt
U myproj/foo.gif
U myproj/hello.c
U myproj/a-subdir/whatever.c
U myproj/a-subdir/subsubdir/fish.c
U myproj/b-subdir/random.c
paste$ cd myproj
paste$ cvs edit hello.c
paste$ emacs hello.c
...

Cuando qsmith ejecuta cvs edit hello.c, CVS mira en la lista de alarma de hello.c, ve que jrandom está en ella, y envia un correo a jrandom diciendole que qsmith ha empezado a editar el fichero. El fichero incluso parece haber llegado del mismo qsmith:

From: qsmith
Subject: CVS notification
To: jrandom
Date: Sat, 17 Jul 1999 22:14:43 -0500

myproj hello.c
--
Triggered edit watch on /usr/local/newrepos/myproj
By qsmith

Además cada vez que qsmith (o cualquiera) entrega una nueva revisión de
hello.c, jrandon recivirá otro correo electrónico:


myproj hello.c
--
Triggered commit watch on /usr/local/newrepos/myproj
By qsmith

Después de recibir estos correos, jrandom podría querer actualizar su copia de hello.c para ver qué cambios qsmith ha hecho o quizás quisiera enviar un correo a qsmith para saber porqué está trabajando en ese fichero. Nada fuerza a qsmith a recordar hacer un cvs edit. Si lo hizo fué porque quizá querría hacerselo saber a jrandom. De cualquier forma, incluso si se olvida hacer un cvs edit al hacer una entrega se disparará la notificación. La razón de cvs edit es que los advierte a los vigilantes antes de que empizes a trabajar en el fichero y éstos se pueden poner en contacto contigo para resolver el conflicto, antes de que hayas desperdiciado el tiempo.

CVS asume que cualquiera que hace un cvs edit quiere ser añadido a la lista de alarma de ese fichero, al menos temporalmente, en caso de que algún otro también lo edite. Cuando qsmith ejecuta cvs edit, se convierte en un vigilante de hello.c. Él y jrandom recivirían un notificación si una tercera persona ejecutase cvs edit en ese fichero (ó lo entregara).

Sin embargo, CVS también asume que la persona que está editando el fichero quiere estar en la lista mientras está trabajando en él. Esos usuarios serán borrados de la lista cuando hayan hecho su edición del fichero. Si quieren ser vigilantes permanenetes deberán ejecutar cvs watch add. CVS asume por defecto que alguién ha terminado la edición cuando él ó ella hace una entrega del fichero.

Cualquiera que está en la lista de vigilancia de un fichero por haber ejecutado cvs edit en ese fichero es conocido como temporary watcher y es eliminado de la lista cuando entrege un cambio en el fichero. Si quiere editarlo de nuevo tendría que volver a ejecutar cvs edit.

La suposición de que la primera entrega acaba la sesión de edición es sólamente una buena predicción, ya que CVS no sabe cuantas entregas la persona necesitará para hacer sus cambios. La predicción es buena para one-off cambios - cambios donde hay que arreglar un pequeño error en un fichero y entregarlo. Para ediciones más prolongadas que requieren varias entregas sería bueno que el usuarios se añadiera permanentemente a la lista de vigilantes.

paste$ cvs watch add hello.c
paste$ cvs edit hello.c
paste$ emacs hello.c
...
paste$ cvs commit -m "escrito hola en sánscrito"

Incluso después de una entraga, qsmith quedará como vigilante de hello.c ya que ejecutó watch add sobre él. (A propósito, qsmith no recibirá notificaciones sobre sus propios cambios; sólo los demás. CVS es lo suficientemente listo para no advertirte sobre tus propias acciones.)