Node:CVS ignora los permisos que pongo; ¿por qué lo hace?, Next:, Previous:Mis envíos (commits) parecen tener lugar a trozos y no atómicamente, Up:Algunos Problemas de la Vida Real (con Soluciones)



CVS ignora los permisos que pongo; ¿por qué lo hace?

En general, CVS no realiza un muy buen trabajo para preservar los permisos de los ficheros. Cuando importamos un proyecto y luego lo extraemos, no hay garantía de que en la copia de trabajo obtenida los ficheros tengan los mismos permisos que cuando fueron importados. Más bien, lo que sucede es que los ficheros de la copia de trabajo se crean con el esquema de permisos estándar que tengamos en nuestra cuenta de usuario.

Sin embargo, hay al menos una excepción. Si queremos almacenar scripts de shell ejecutables en el proyecto, podemos mantenerlos ejecutables en todas las copias de trabajo sin más que hacer ejecutable el fichero del repositorio:

floss$ ls -l /usr/local/mirepo/unproyecto
total 6
-r--r--r--   1 jsuerte  users         630 Aug 17 01:10 README.txt,v
-r-xr-xr-x   1 jsuerte  users        1041 Aug 17 01:10 scrub.pl,v*
-r--r--r--   1 jsuerte  users         750 Aug 17 01:10 hola.c,v

Nótese que aunque el fichero es ejecutable, se mantiene en solo-lectura, como debe ser en todos los ficheros de un repositorio (recordar que CVS trabaja haciendo los cambios sobre una copia temporal del fichero RCS, que luego reemplaza al original).

Cuando importamos o añadimos un fichero ejecutable, CVS preserva los bits de ejecución, de manera que si los permisos iniciales son correctos, en general no habrá que preocuparse más. Sin embargo, si accidentalmente añadimos el fichero antes de hacerlo ejecutable, debemos ir al repositorio y cambiar los bits a mano sobre el fichero RCS.

Los permisos del repositorio siempre predominan. Si el fichero no es ejecutable en el repositorio pero sí lo es en la copia de trabajo, cuando hagamos una actualización seguirá como esté en el repositorio. Cuando los permisos de los ficheros cambian misteriosamente puede ser frustrante. Si esto sucede, comprobar primero los permisos en el repositorio y ver si podemos resolverlo ajustando los permisos sobre los ficheros RCS.

Recientemente se añadió a CVS una característica denominada PreservePermissions que puede aliviar alguno de estos problemas. Sin embargo, usando esta característica pueden producirse otros resultados inesperados (por lo que no recomiendo usarla siempre). Nos debemos asegurar de leer antes los nodos config y Special Files del manual de Cederqvist antes de incluir PreservePermissions=yes en CVSROOT/config.