No estoy muy seguro de cómo sucedió esto, pero de alguna manera una jerarquía de directorios completamente vacío ha terminado en mi repositorio:¿Quitar el directorio vacío de CVS?
com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/
Creo que lo que ocurrió fue que estos directorios tenían archivos en ellos, pero luego un desarrollador se dio cuenta de que no debería haberlos registrado, ya que estos son subproductos del proceso de compilación, por lo que eliminó los archivos, pero de alguna manera los directorios vacíos se dejan en el repositorio como reliquias antiguas.
¿Cómo puedo eliminar esto de CVS? Los únicos resultados que parece que puedo encontrar en google dicen que no debería haber una necesidad de eliminar directorios vacíos ya que CVS no los mantendrá en primer lugar, y que las opciones -P
(ciruela) a cvs update
deberían eliminarse. desde el directorio de trabajo, que es de cero ayuda si realmente tiene directorios vacíos en su repositorio.
Un cvs remove
y cvs commit
no parece hacerse cargo de esta situación:
$ cvs remove -Rf com
cvs remove: Removing com
cvs remove: Removing com/companyname
cvs remove: Removing com/companyname/blah
cvs remove: Removing com/sun
cvs remove: Removing com/sun/java
cvs remove: Removing com/sun/java/jax_rpc_ri
$ cvs commit com
cvs commit: Examining com
cvs commit: Examining com/companyname
cvs commit: Examining com/companyname/blah
cvs commit: Examining com/sun
cvs commit: Examining com/sun/java
cvs commit: Examining com/sun/java/jax_rpc_ri
$ ls -l com
total 24
drwxrwxr-x 2 matt matt 4096 Oct 15 14:38 CVS
drwxrwxr-x 9 matt matt 4096 Oct 15 14:38 companyname
drwxrwxr-x 4 matt matt 4096 Oct 15 14:38 sun
Todavía está allí!
¿SVN también tiene este extraño comportamiento?
¡Advertencia! Es necesario ir al repositorio real, físico, porque una vez que CVS pierde un directorio, nunca puede recuperarlo nuevamente. CVS almacena los archivos que se han borrado en carpetas especiales llamadas 'Attic'. Si borra el 'Ático', esos archivos se pierden para siempre. –
Siempre piénselo dos veces antes de hacer algo como esto, pero no veo ningún problema: 'ssh cvsserver:/cvsroot 'tar cvf com.tar com''; 'scp cvsserver: /cvsroot/com.tar .'; 'cvs add com.tar'; 'cvs ci com.tar'; 'cvs rm -f com.tar'; 'ssh cvsserver:/cvsroot 'rm -rf com.tar com'' – minopret