Node:Cómo aparecen las alarmas en el repositorio, Previous:Recomendar a la gente usar alarmas, Up:Alarmas (CVS como telefono)
Para acabar con las cajas negras y los misterios sin solución vamos a hacer una rápida mirada a cómo las alarmas son implementadas en el repositorio. Será rápido ya que no es agradable.
Cuando usted establece una alarma
floss$ pwd /home/jrandom/myproj floss$ cvs watch add hello.c floss$ cvs watchers hello.c jrandom edit unedit commit floss$
CVS la guarda en un fichero especial, CVS/fileattr
, del
subdirectorio apropiado del repositorio.
floss$ cd /usr/local/newrepos floss$ ls CVSROOT/ myproj/ floss$ cd myproj floss$ ls CVS/ a-subdir/ foo.gif,v README.txt,v b-subdir/ hello.c,v floss$ cd CVS floss$ ls fileattr floss$ cat fileattr Fhello.c _watchers=jrandom>edit+unedit+commit floss$
El hecho de que fileattr sea almacenado en un subdirectorio llamado CVS
del repositorio no significa que el repositorio se haya convertido en
una copia de trabajo. Simplemente el nombre CVS
estaba ya
reservado en la copia de trabajo para guardar información con lo
que no habrá ningún proyecto que necesite un subdirectorio con ese nombre
en el repositorio.
No describiré el formato de fileattr
formalmente; se puede ver
bastante bien estudiando los cambios que ocurren en él entre orden y orden.
floss$ cvs watch add hello.c floss$ cat /usr/local/newrepos/myproj/CVS/fileattr Fhello.c _watchers=jrandom>edit+unedit+commit floss$ cvs watch add README.txt floss$ cat /usr/local/newrepos/myproj/CVS/fileattr Fhello.c _watchers=jrandom>edit+unedit+commit FREADME.txt _watchers=jrandom>edit+unedit+commit floss$ cvs watch on hello.c floss$ cat /usr/local/newrepos/myproj/CVS/fileattr Fhello.c _watchers=jrandom>edit+unedit+commit;_watched= FREADME.txt _watchers=jrandom>edit+unedit+commit floss$ cvs watch remove hello.c floss$ cat /usr/local/newrepos/myproj/CVS/fileattr Fhello.c _watched= FREADME.txt _watchers=jrandom>edit+unedit+commit floss$ cvs watch off hello.c floss$ cat /usr/local/newrepos/myproj/CVS/fileattr FREADME.txt _watchers=jrandom>edit+unedit+commit floss$
Registros de edición son almacenados en fileatrr también.
Esto es lo que pasa cuando qsmith se añade asimismo como un editor.
paste$ cvs edit hello.c floss$ cat /usr/local/newrepos/myproj/CVS/fileattr Fhello.c _watched=;_editors=qsmith>Tue Jul 20 04:53:23 1999 GMT+floss\ +/home/qsmith/myproj;_watchers=qsmith>tedit+tunedit+tcommit FREADME.txt _watchers=jrandom>edit+unedit+commit
Finalmente, observe que CVS quita le fichero fileattr y subdirectorio
CVS cuando no hay más vigilantes o editores para cualquier fichero en ese
directorio:
paste$ cvs unedit floss$ cvs watch off floss$ cvs watch remove floss$ cat /usr/local/newrepos/myproj/CVS/fileattr cat: /usr/local/newrepos/myproj/CVS/fileattr: No such file or directory floss$
Debe quedar claro depués de esta breve exposición que los detalles del tratamiento del formato de fileattr se dejan a CVS. La principal razón para tener una comprensión básica del formato, además de la satisfacción inherente de saber que es lo que ocurre detrás de las cortinas, es si usted va a escribir una extensión a las alarmas de CVS, o está depurando algún error en ellas. Es suficiente con que no se alarme si ve CVS/ subdirectorios apareciendo y desapareciendo de su repositorio. Son los únicos lugares seguros que CVS tiene para almacenar meta-información como las listas de vigilancia.