Node:Recomendar a la gente usar alarmas, Next:Cómo aparecen las alarmas en el repositorio, Previous:Encontrar quién vigila qué, Up:Alarmas (CVS como telefono)
Habrá observado que el funcionamiento de las alarmas depende, en
última instancia de la colaboración de todos los desarrolladores.
Si alguien empieza a editar un fichero sin ejecutar cvs edit
,
nadie lo sabrá hasta que los cambios se entreguen. Como cvs edit
se usa a un nivel superior y no está dentro de la rutina normal de
desarrollo las personas pueden olvidarse fácilmente de hacerlo.
Aunque CVS no puede forzar a alguien a usar cvs edit
, tiene un
mecanismo que es permite a recordar a los usuarios a hacerlo;
la orden watch on
:
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 on hello.c floss$
Ejecutando cvs watch
sobre hello.c, jrandom hace que futuras
obtenciones de copias de myproj hagan que hello.c sea de sólo lectura en la
copia de trabajo. Cuando qsmith intenta trabajar sobre él comprobará
que es de sólo lectura y se le recordará que debe ejecutar primero
cvs edit
:
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$ ls -l total 6 drwxr-xr-x 2 qsmith users 1024 Jul 19 01:06 CVS/ -rw-r--r-- 1 qsmith users 38 Jul 12 11:28 README.txt drwxr-xr-x 4 qsmith users 1024 Jul 19 01:06 a-subdir/ drwxr-xr-x 3 qsmith users 1024 Jul 19 01:06 b-subdir/ -rw-r--r-- 1 qsmith users 673 Jun 20 22:47 foo.gif -r--r--r-- 1 qsmith users 188 Jul 18 01:20 hello.c paste$
Cuando lo ha hecho, el fichero será de lectura-escritura. Entonces lo
podrá editar y cuando haga entregas, pasa a modo de sólo lectura:
paste$ cvs edit hello.c paste$ ls -l hello.c -rw-r--r-- 1 qsmith users 188 Jul 18 01:20 hello.c paste$ emacs hello.c ... paste$ cvs commit -m "decir hello en arameo" hello.c Checking in hello.c; /usr/local/newrepos/myproj/hello.c,v <-- hello.c new revision: 1.12; previous revision: 1.11 done paste$ ls -l hello.c -r--r--r-- 1 qsmith users 210 Jul 19 01:12 hello.c paste$
Al hacer esta edición y entrega se enviarán notificaciones a todos los
vigilantes de hello.c. Observe que jranadom no es necesariamente uno de
ellos. Al ejecutar cvs watch
sobre hello.c jrandom no se añadió asimismo
a la lista de vigilancia para ese fichero; simplemente especificó qe
se deberían obtener copias en modo de sólo lectura. Las personas que quieren
vigilar un fichero deben añadirse a la lista de vigilancia. CVS no puede
hacer nada sobre esto.
Establecer alarmas en un simple fichero sería la excepción. Generalmente
es más común establecer las alarmas sobre un proyecto:
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 on floss$
Esta acción equivale a anunciar una potitica de decisión para todo el
proyecto: "Por favor, use cvs edit para advertir a los vigilantes en
que está trabajando y vigile cuantos ficheros le interesen o sean de su
responsabilidad." Cada fichero del proyecto será actualizado en modo
de sólo lectura, y así a la gente se le recordará que se espera que
usen cvs edit
antes de trabajar en algo.
Curiosamente, aunque obtenciones de copias de ficheros vigilados se hacen
en modo de sólo lectura, las actualizaciones no lo son. Si qsmith ha
obtenido una copia de trabajo antes de que jrandom hiciera cvs watch
sus ficheros serían le lectura-escritura quedando así incluso después de
hacer actualizaciones. Sin embargo, cualquier fichero que entregue
después de que jrandom estableciera las alarmas será de sólo lectura.
Si jrandom quita las alarmas:
floss$ cvs watch off
los ficheros de sólo lectura de qsmith no se convierte mágicamente en ficheros de lectura-escritura. Por otro lado, después de hacer una entrega volverán a modo lectura-escritura de nuevo (como si las alarmas todavía estuviaran puestas).
Observe que qsmith podría, si fuese malicioso, hacer los ficheros de
su copia de trabajo escribibles usando la orden estándar de Unix
chmod
saltándose cvs edit
por completo.
paste$ chmod u+w hello.c
o si quisiera hacerlo todo en una pasada.
paste$ chmod -R u+w .
No hay nada que CVS pueda hacer sobre esto. Las copias de trabajo son por su propia naturaleza privadas. Las alarmas pueden permitir su escrutinio al público tanto como lo permita el desarrollador. Sólamente cuando un desarrollador hace algo que afecte al repositorio (como una entrega) su privacidad se pierde incondicinalmente.
La relación entre watch add
, watch remove
, watch on
y watch off
podría parecer confusa. Para aclarar esto resumamos el esquema general:
add
y remove
sirven para añadir o quitar usuarios de la
lista de vigilancia de un fichero; no tiene nada que ver con que
los ficheros sean de sólo lectura al obtener la copia de trabajo o
después de la entrega. on
y off
sirven para los permisos
de los ficheros. No tienen nada que ver con la lista de vigilancia;
más bien son herramientas par ayudar a los desarrolladores a recordar
la política de alarmas haciendo que los ficheros de la copia de trabajo
sean de sólo lectura.
Todo esto parece un poco inconsistente. De algún modo el usar alarmas parece ir en contra de la esencia de CVS. Se desvía del universo ideal de múltiples desarrrolladores editando libremente en sus copias de trabajo, ocultos unos de otros hasta que hacen una entrega. Con las alarmas CVS da a los desarrolladores atajos para informarse mutuamente lo que pasa en sus copias de trabajo. Sin embargo no tiene forma de imponer las políticas de observación ni un concepto de que constituye una sesión de edición. Aun así las alarmas pueden ser útiles en ciertas ocasiones.