Node:CVS ignora los permisos que pongo; ¿por qué lo hace?, Next:El CVS de Windows dice que no puede encontrar mi fichero .cvspass ¿por qué?, Previous:Mis envíos (commits) parecen tener lugar a trozos y no atómicamente, Up:Algunos Problemas de la Vida Real (con Soluciones)
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.