Node:Usando alarmas durante el desarrollo, Next:Cómo acabar una sesión de edición, Previous:Habilitar alarmas en el repositorio, Up:Alarmas (CVS como telefono)
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.)