Borrar carpetas .SVN – Windows-Linux-Mac

Borrar carpetas .SVN – Windows-Linux-Mac

Cuando usamos subversión (SVN) para llevar el control de versiones de nuestros trabajos, en ocasiones requerimos combinar archivos y nos encontramos con el problema de que las carpetas .svn que los describen crean un error al momento de subir porque puede estar haciendo referencia a otro servidor u archivo por ejemplo. En este caso debemos borrar las carpetas .svn que se crean en cada subdirectorio de nuestros proyectos; dado que en los sistemas linux/osx las carpetas con un punto (.) adelante representan la propiedad oculto, estas serán archivos ocultos que podemos ver con control+h; sabiendo que los .svn se crean en cada subdirectorio, podemos tener miles de carpetas .svn, así que mostraremos como borrarlas de forma recursiva en el directorio especificado y subdirectorios; para ello el procedimiento es el siguiente: desde la consola accedemos a la ruta donde queremos eliminar dichos archivos y usamos los siguientes comandos dependiendo del sistema operativo:

#Para Windows

FOR /r "." %f IN (.svn) DO @RD /s /q "%f"

#Para Linux / Mac OSX

rm -rf `find . -type d -name .svn`

Ahora bien, podemos crear una forma más rápida para evitar estar escribiendo dichos comandos cada vez y más bien colocarlos «a la mano» veamos:

#Para Windows podemos crear una opción para el menú contextual sobre directorios de esta forma:

Creamos un archivo .reg con el siguiente contenido:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\BorrarCarpetasSVN]
@="Borrar carpetas SVN"

[HKEY_CLASSES_ROOT\Directory\shell\BorrarCarpetasSVN\command]
@="cmd.exe /c  \"TITLE Borrando las carpetas SVN en %1 && FOR /r \"%1\" %%f IN (.svn) DO @RD /s /q \"%%f\" \""

Nos quedará algo así:

borrar_svn_reg

Lo guardamos y lo abrimos, aceptamos la inserción al registro y ahora disponemos de esta opción al pulsar el botón secundario del mouse sobre cualquier directorio como se observa a continuación:
borar_svn

#Para Linux / Mac OSX  de igual forma para estos sistemas podemos crear un script y colocarlo en /usr/bin/ y escribir el nombre estando en la ruta deseada, así solo escribimos el comando nombrado como deseemos en dicha ruta y ejecutará la acción; veamos:

Crearemos un archivo llamado por ejemplo «quitarsvn» que contendrá el siguiente código y finalmente lo guardaremos en /usr/bin/ :

#!/bin/sh
echo "Borrando recursivamente las carpetas .svn"
pwd
rm -rf `find . -type d -name .svn

Ahora escribiremos sólo «quitarsvn» (Recuerde estar sobre la ruta en la que quiere eliminar las carpetas .SVN). Nota: puede que deba darle permisos de ejecución al archivo la primera vez, esto sería desde la consola como root (#) chmod +x /usr/bin/quitarsvn

Existe forma de crearlo desde el menú contextual pero no lo explicaré en esta entrada porque requeriría utilizar unas librerías aparte llamada «Nautilus Extensions» en el caso de nautilus para linux y así depende de cada tipo de escritorio la que corresponda, de modo que se los dejo de tarea, pero el comando a ejecutar es el mismo de arriba.

Sin más por ahora, hasta la próxima.