2011-02-03 32 views
72

Tengo un directorio con muchos subdirectorios. En cada carpeta hay una carpeta de subversión (.svn).Comando para eliminar recursivamente todos los directorios .svn en Windows

¿Hay un comando en Windows que pasará por cada carpeta y subdirectorio y eliminará la carpeta .svn?

¿O tendré que crear un script o hacerlo manualmente?

+4

Si no debe tener un script, solo buscaría ".svn" en la carpeta raíz, luego seleccionaría todos los resultados y los eliminaría. –

+1

También podría estar interesado en el comando svn export (http://svnbook.red-bean.com/en/1.0/re10.html), que copia un directorio en otra ubicación, pero sin todos los directorios .svn. –

+0

@JB Nizet: Debe crear una respuesta para que la gente pueda votar, en lugar de agregar comentarios. Los comentarios son para comentar sobre la pregunta, por ejemplo, cuando algo no está claro –

Respuesta

28

Utilice el comando svn export para exportar una copia de trabajo de Subversion a una nueva estructura de directorios "limpia" que no tenga los directorios .svn.

+4

Esto puede no ser lo que está buscando. Quería lo mismo para poder registrar un código ya modificado en otra ubicación de SVN. –

+0

puede hacer eso después de una exportación de 'svn' –

+0

Esto funcionó para mí. Utilicé svn export [RepoPath] [NewPath] – user489041

45

Haga esto en PowerShell.

NOTA: ¡Esto es recursivo así que asegúrese de estar en el directorio correcto!

gci -fil '.svn' -r -force | ri -r -force 

Aquí está el resto de mi secuencia de comandos de limpieza de árbol fuente.

gci -fil 'bin' -r -force | ri -r -force 
gci -fil 'obj' -r -force | ri -r -force 
gci -fil '_ReSharper*' -r -force | ri -r -force 
gci -fil '*.suo' -r -force | ri -r -force 
gci -fil '*.user' -r -force | ri -r -force 
+0

Nota: Si tiene rutas con más de 260 caracteres, obtendrá una excepción PathTooLongException de RemoveItem. – bluelDe

156

Crea un pequeño archivo por lotes con la siguiente línea y ejecútalo desde la carpeta principal bajo la cual hay directorios .svn.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G" 

También puede emitir por debajo de la línea recta desde el símbolo del sistema:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G" 
+1

Muchas gracias. eso es lo que exactamente quiero me desconecté de mi repositorio svn por algún motivo y no tenía tiempo para hacer I + D por este motivo. ahora uso Filezilla para cargar el proyecto completo sin ninguna carpeta .svn con este comando. nuevamente gracias –

+0

Gracias por esto. Apreciado enormemente. Me dieron un árbol de carpetas con .svn pero en realidad no lo uso. La búsqueda en Win de .svn (independientemente de si se muestran o no los archivos ocultos) no arrojó ningún resultado. ¡El mensaje de línea de comando hizo el truco! –

+1

Todos los votos por adelantado para usted señor –

9

Si desea eliminar todas las subcarpetas nombradas Svn en ventanas continuación, crear el archivo por lotes con este contenido :

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i" 
) 

guardarlo en un archivo de del_All_Dot_SVN_Folders.cmd. Ejecutarlo. Ya terminaste

Gracias a http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

Recuerde el código anterior ha .svn mientras que el código en el enlace sólo ha svn * así que es mejor tener la Svn tener no por casualidad efecto no deseado.

8

Simplemente escriba .svn en el cuadro de búsqueda del Explorador de archivos, luego seleccione y elimine todos los resultados de búsqueda (consulte el comentario de JB Nizet). Por supuesto, este método también se puede usar para eliminar rápidamente los directorios obj y bin, p. al organizar archivos svn. Aunque OP pidió una solución de línea de comandos, también indicó usar Windows y consideró una eliminación manual, por lo que el método File Explorer podría considerarse, especialmente porque es el método más rápido y no depende de 'herramientas' como svn export.

Aunque OP ya seleccionó una respuesta aceptada, esta respuesta podría ser útil para otras. Por lo menos era útil para mí, un usuario de Linux/ventanas mucho tiempo que prefiere las líneas de mando y supo por primera vez el cuadro de búsqueda por este post :-)

explorer screenshot with searchbox

-1

Como un punto importante, si se quiere Ejecute Shell para eliminar.carpetas svn, puede necesitar -depth argumento para evitar que el comando find ingrese al directorio que acaba de eliminar y muestra mensajes de error como, por ejemplo,

"find: ./.svn: No such file or directory" 

para deshacerse de este error, puede utilizar el comando find como los siguientes:

cd [dir_to_delete_svn_folders] 
find . -depth -name .svn -exec rm -fr {} \; 
0

Sé que es demasiado tarde para responder a esto, pero supongo que es una manera fácil si tenga Eclipse y el plugin svn instalado en tu eclipse. Haga clic derecho sobre el proyecto, vaya a Equipo-> desconectar. Se abrirá una ventana emergente donde se selecciona la primera opción: 'Eliminar también la metainformación SVN del sistema de archivos'. Esto eliminará automáticamente todas las carpetas de SVN junto con los archivos de propiedades de svn que a veces se pueden olvidar al eliminar solo las carpetas .svn.

Cuestiones relacionadas