Node:Qué ocurre cuando elimina un fichero, Next:El directorio administrativo CVSROOT/, Previous:Formato RCS, Up:Administracion del Repositorio
Cuando elimina un fichero de un proyecto, no desaparece simplemente. CVS
debe ser capaz de recuperar esos ficheros cuando solicite una revisión
antigua del proyecto. En lugar de ello, el fichero se pone en el
Attic
, ático literalmente:
floss$ pwd /home/jluis/src/miproyecto floss$ ls /usr/local/nuevorepos/miproyecto/ README.txt,v a-subdir/ b-subdir/ foo.jpg,v hello.c,v floss$ rm foo.jpg floss$ cvs rm foo.jpg cvs remove: scheduling 'foo.jpg' for removal cvs remove: use 'cvs commit' to remove this file permanently floss$ cvs ci -m "Eliminado foo.jpg" foo.jpg Removing foo.jpg; /usr/local/nuevorepos/miproyecto/foo.jpg,v <-- foo.jpg new revision: delete; previous revision: 1.1 done floss$ cd /usr/local/nuevorepos/miproyecto/ floss$ ls Attic/ README.txt,v a-subdir/ b-subdir/ hello.c,v floss$ cd Attic floss$ ls foo.jpg,v floss$
En cada directorio del repositorio de un proyecto, la presencia de un
subdirectorio Attic/
indica que se ha borrado al menos un fichero
de ese directorio (esto quiere decir que no debería usar directorios llamados
Attic en sus proyectos). Sin embargo, CVS no mueve simplemente el fichero
RCS a Attic/; además envía el cambio con una nueva revisión al fichero, con
un estado especial de revisión de dead
, muerto. Aquí está la sección
de interés de Attic/foo.jpg,v:
1.2 date 99.06.21.03.38.07; author jluis; state dead; branches; next 1.1;
Si el fichero se vuelve a traer de nuevo a la vida, CVS tiene una forma de registrar que estaba muerto en algún punto del pasado y que ahora está vivo otra vez.
Esto quiere decir que si quiere restaurar un fichero eliminado, no puede
sacarlo del Attic/ simplemente y ponerlo de nuevo en el proyecto. En lugar
de ello, tiene que hacer algo como lo siguiente con una copia de trabajo:
floss$ pwd /home/jluis/src/miproyecto floss$ cvs -Q update -p -r 1.1 foo.jpg > foo.jpg floss$ ls CVS/ README.txt a-subdir/ b-subdir/ foo.jpg hello.c floss$ cvs add -kb foo.jpg cvs add: re-adding file foo.jpg (in place of dead revision 1.2) cvs add: use 'cvs commit' to add this file permanently floss$ cvs ci -m "revivida imagen jpg" foo.jpg Checking in foo.jpg; /usr/local/nuevorepos/miproyecto/foo.jpg,v <-- foo.jpg new revision: 1.3; previous revision: 1.2 done floss$ cd /usr/local/nuevorepos/miproyecto/ floss$ ls Attic/ a-subdir/ foo.jpg,v README.txt,v b-subdir/ hello.c,v floss$ ls Attic/ floss$
Queda mucho más por saber del formato RCS, pero esto es suficiente para que un administrador de CVS mantenga un repositorio. Es bastante raro que realmente haya que editar un fichero RCS; normalmente sólo tendrá que ajustar permisos de ficheros en el repositorio, al menos si mi propia experiencia sirve de guía. Sin embargo, cundo CVS empieze a comportarse de forma realmente extraña (raro, pero no completamente fuera de lo posible), puede que quiera mirar dentro de los ficheros RCS para averiguar qué está pasando.