miércoles, 7 de enero de 2009

Eliminar carpetas .svn de un proyecto

Hay cosas que a veces son muy problemáticas y que uno le da la vuelta mil veces para conseguir la solución, y después de haber logrado resolverlo, uno se entera que existe un paso muy pero muy sencillo!!!.
Esto me paso con el problema de eliminar las carpetas de un proyecto que ha estado en un repositorio SVN, muchas veces al querer copiarlo después de haberlo descargado este traerá en cada directorio una carpeta con .svn.

A veces si era un proyecto pequeño tocaba eliminar a mano cada carpeta .svn , otras cuando es más grande se puede hacer un script que busque los directorios con extensión .svn y los borre, pero sin embargo lo que si da risa es que la solución real esta en el mismo manual del subversion, es solo cuestión de EXPORTAR el proyecto y este nos generará una carpeta con el proyecto sin las tediosas carpetas .svn!!.
Así que todo se reduce a una simple sentencia:


svn export rutasvn rutadestino


La ruta destino no es necesario que se cree , en caso de que ya este creada le tendremos que agregar al final de la sentencia la opción --force.
Y más risa dará si usamos herramientas como TortoiseSVN, RapidSVN o Workbench , ya que en estos mismo encontrará la función "export" , con lo cual solo debe seleccionar la carpeta y la herramienta se la preparará sin las correspondientes carpetas .svn.
Típico problema RTFM (Read the fuck manual!!)


7 comentarios:

  1. find . -name ".svn" -type d | xargs rm -rf

    ResponderEliminar
  2. Claro esa opción es una de las tantas que se puede ejecutar, sin embargo te borra todas las carpetas .svn que encuentre, además toma en cuenta que debes logearte como root para poder ejecutar la sentencia y obviamente irte a la consola, así que creo que es mucho más fácil usar el comando svn export el cual no necesita autenticarte o más aún.... ejecutar el comando desde tu propia herramienta svn (rapidsvn, tortoise, etc). Saludos

    ResponderEliminar
  3. Loguearte como root?

    No entendi esa parte. En teoria no deberias checkoutear algo como root, asiq ue no deberias tener que hacer sudo para ejecutar ese comando

    ResponderEliminar
  4. Hola, yo creo que Ricardo se refiere a que a veces al ejecutar el comando find sin tener privilegios de super usuario, el resultado es un pocoton de "Permiso denegado"

    ResponderEliminar
  5. Solo sale permiso denegado en carpetas cuyo acceso no tienes (obviamente) por que has usado MAL sudo svn co http://etc..., lo que hay que usar es siempre svn co y no sudo ya que si no te crea los .svn como root y no como tu usuario normal, yo prefiero find por que como tanto en un caso como en otro tienes que usar un comando y tienes que ir a la consola es mejor simplemente quitar los .svn que tener 2 copias del mismo repositorio uno con .svn y otro sin ellos, vamos digo yo... Os dejo un regalo que seguro es útil para algunos. Respecto a la diferencia de xargs que puso pablo a un rm -f por cada linea el xargs lo que hace es cepillarse todas las carpetas en una sola linea, mas rapido y eficaz, si quieres ver linea a linea tienes la otra opcion.

    Saludos.

    #!/bin/bash
    # Script que borra recursivamente todas las carpetas que crea el svn
    # del directorio actual, util cuando hay algun problema con el svn
    echo
    echo '---------------------------------------------------------------------------'
    echo 'Directorio de trabajo:'
    pwd
    while true; do
    echo
    read -p '¿Desea borrar todas las carpetas .svn del directorio actual? [y/n] ' case
    case $case in
    y ) break;;
    s ) break;;
    n ) exit;;
    * ) echo "Por favor responda y o n";;
    esac
    done
    echo '---------------------------------------------------------------------------'
    echo "Eliminando recursivamente carpetas .svn de:"
    echo
    pwd
    echo
    find . -type d -name .svn
    rm -rf `find . -type d -name .svn`
    echo
    echo "Finalizado."
    echo

    ResponderEliminar
  6. Thank hermano, me vino genial ;)

    ResponderEliminar
  7. De nada me alegra que después de tanto tiempo aún sirva la información. Saludos!

    ResponderEliminar