Node:El Fichero checkoutlist, Previous:El Fichero notify, Up:El directorio administrativo CVSROOT/



El Fichero checkoutlist

Si mira en CVSROOT/, verá qué copias de trabajo de los ficheros existen, junto a sus ficheros de revisión RCS:

floss$ ls /usr/local/nuevorepos/CVSROOT
checkoutlist     config,v       history     notify     taginfo
checkoutlist,v   cvswrappers    loginfo     notify,v   taginfo,v
commitinfo       cvswrappers,v  loginfo,v   passwd     verifymsg
commitinfo,v     editinfo       modules     rcsinfo    verifymsg,v
config           editinfo,v     modules,v   rcsinfo,v

floss$

CVS presta sólo atención a las versiones de trabajo, no a los ficheros RCS, cuando está buscando una guía sobre cómo comportarse. Por tanto, siempre que haga un envío de cambios de su copia de trabajo de CVSROOT/ (de la que podría obtenerse incluso, después de todo, una copia de trabajo desde otra máquina distinta), CVS actualiza automáticamente todos los ficheros cambiados en el propio repositorio. Sabrá que esto ocurre porque CVS mostrará un mensaje al final de estos envíos:

floss$ cvs ci -m "añadidos módulos mp y asub" modules
Checking in modules;
/usr/local/nuevorepos/CVSROOT/modules,v  <--  modules
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database

CVS se entera automáticamente de lo que pasa con los ficheros estándar de administración, y los reconstruirá en CVSROOT/ cuando sea necesario. Si decide poner ficheros personalizados en CVSROOT/ (como programas o ficheros de plantilla rcsinfo), tendrá que decirle explícitamente a CVS que los trate del mismo modo.

Éste es el propósito del fichero checkoutlist. Tiene un formato distinto al de la mayoría de los ficheros que hemos visto hasta ahora

NOMBRE_FICHERO     MENSAJE_DE_ERROR_SI_NO_PUEDE_OBTENERSE_COPIA_DEL_FICHERO

por ejemplo,

log.pl           imposible obtener copia de / actualizar log.pl en CVSROOT

bugfix.tmpl      imposible obtener copia de / actualizar bugfix.tmpl en CVSROOT

Tradicionalmente algunos ficheros de CVSROOT no se someten a control de revisión. Uno de ellos es el fichero history, que mantiene un registro en vivo de todas las acciones en el repositorio para usarse con las órdenes cvshistory (que lista actividades de marcas, obtenciones de copias y actualizaciones para un fichero o un directorio del proyecto dado). A propósito, si simplemente elimina el fichero history CVS detendrá servicialmente ese registro.

Nota: a veces el fichero history es la causa de problemas con los permisos, y la forma más fácil de resolverlos es o eliminarlo o hacerlo modificable por todo el mundo.

Otro fichero de administración no sujeto a revisión es passwd, dado que obtener una copia suya por la red comprometería las contraseñas (aunque estén cifradas). Tendrá que decidir basándose en su propia situación de seguridad si quiere añadir passwd a checkoutlist o no; por defecto no está.

Dos notas finales sobre el directorio CVSROOT/: Es posible, si comete un error lo bastante grande, que envíe cambios de un fichero administrativo que esté estropeado de tal forma que impida que se haga cualquier otro envío. Si hace esto, ¡por supuesto que no será capaz de enviar una versión corregida del fichero administrativo!. La solución es ir y editar a mano la copia de trabajo del repositorio del fichero administrativo para corregir el problema; puede que el repositorio entero esté inaccesible hasta que haga esto.

Además, en aras de la seguridad, asegúrese de que en el directorio CVSROOT/ sólo pueden escribir usuarios en quienes confía (con confianza quiero decir que confíe tanto en sus intenciones como en su capacidad para no poner en peligro sus contraseñas). Los ficheros *info le dan a la gente la capacidad de invocar programas en general, así que cualquiera que pueda hacer envíos o editar ficheros en el directorio CVSROOT/ puede en la práctica ejecutar cualquier orden del sistema. Esto es algo que siempre debe tener en mente.