pharmacy - ¿Eliminar el directorio vacío de CVS?
cvs store (7)
No estoy muy seguro de cómo sucedió esto, pero de alguna manera una jerarquía de directorios completamente vacía ha terminado en mi repositorio:
com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/
Creo que lo que sucedió fue que estos directorios tenían archivos, pero luego un desarrollador se dio cuenta de que no debería haberlos registrado en primer lugar ya que estos son subproductos del proceso de compilación, por lo que eliminó el 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 necesidad de eliminar los directorios vacíos ya que CVS no los mantendrá en primer lugar, y que las opciones -P
(prune) para cvs update
debería eliminarlos del directorio de trabajo, que es de cero ayuda si realmente tiene directorios vacíos en su repositorio.
Un cvs commit
cvs remove
y cvs commit
no parece resolver 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?
CVS tiene una serie de defectos de diseño, nunca ser capaz de deshacerse de un directorio sin perder el historial es uno. La dificultad para renombrar archivos y directorios sin perder el historial es otra.
Considera graduarte a Subversion . cvs2svn hace un muy buen trabajo al convertir repositorios incluyendo todas las ramas y etiquetas. Los conjuntos de comandos CVS y SVN son muy similares y requieren un ajuste mínimo. (Y para evitar que se convierta en una "guerra de control de versiones") una vez que esté utilizando SVN puede pasar a cualquier número de sistemas de control de versiones más avanzados como git o SVK .
El pago y la actualización de CVS siempre verificará los directorios vacíos; así es como se construye CVS. Haga una actualización con "-P" - "ciruela" - para eliminar los directorios vacíos:
cvs update -dP
(Al agregar "-d" se actualizarán los directorios nuevos que aparecieron desde su última actualización, de lo contrario, CVS los ignorará).
Acaba de hacer
- rm -rvf / localCopy / project / emptyDirectory
- edit / localCopy / project / CVS / Entries, eliminar la línea D / emptyDirectory ////, guardar archivo
- rmdir -v / CVSROOT / project / emptyDirectory
para deshacerse de emptyDirectory in project. Admitir que no es legítimo interferir con los datos internos de CVS, pero parece haber funcionado (cvs versión 1.12.13).
Esto funcionó para mí. Básicamente cuando lo haces
rmdir -v / CVSROOT / project / emptyDirectory # Estamos eliminando el directorio del directorio del repositorio de CVS.
Si tiene acceso de inicio de sesión del servidor Unix del repositorio, puede viajar a la ruta y puede eliminar el directorio, o plantear la misma preocupación con el equipo de Unix.
AFAIK el protocolo CVS no permite eliminar directorios. Debe ir a la consola del servidor y eliminarlos del repositorio físico real.
http://www.network-theory.co.uk/docs/cvsmanual/Removingdirectories.html
Usted no elimina el directorio en sí mismo; No hay manera de hacer eso.
cvs tiende a trabajar en un enfoque de dos fases con respecto a los directorios, por eso hay una opción -P para muchos comandos cvs para "Podar directorios vacíos".
Cuando esto ha sucedido, por ejemplo, quiero renombrar un directorio que acabo de agregar, elimino el directorio, elimino la entrada para el directorio en el archivo CVS / Entries, será una línea precedida de una "D".
Trabajo hecho.
Si me he comprometido, me aseguro de que mi área de trabajo actual que contiene el / los directorio / s vacíos esté registrada / o. A continuación, elimino la parte del área de trabajo a la que agregué los directorios.
Por ejemplo, en
~/Sandbox/my_project/some_stuff_i_want
~/Sandbox/my_project/empty_dir_1
~/Sandbox/my_project/other_stuff_i_want
Me aseguro de que todo esté actualizado en ambos directorios que contienen las cosas que quiero conservar. A continuación, elimino mi proyecto de mi caja de arena.
Luego elimino los directorios vacíos del propio repositorio .
Volviendo y revisando el mismo área de trabajo, por ejemplo, mi_proyecto me dará el área de trabajo sin los directorios vacíos.
O simplemente deje todo como está y use la opción -P para que CVS compruebe todo (o actualice todo), luego elimine los directorios vacíos.
HTH
aclamaciones,
Robar
No puede eliminar el directorio de su área de trabajo, necesita eliminarlo para ir al servidor donde se guarda el depósito real. pero puede eliminar archivos del directorio con el comando cvs remove.