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!!)
find . -name ".svn" -type d | xargs rm -rf
ResponderEliminarClaro 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
ResponderEliminarLoguearte como root?
ResponderEliminarNo entendi esa parte. En teoria no deberias checkoutear algo como root, asiq ue no deberias tener que hacer sudo para ejecutar ese comando
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"
ResponderEliminarSolo 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.
ResponderEliminarSaludos.
#!/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
Thank hermano, me vino genial ;)
ResponderEliminarDe nada me alegra que después de tanto tiempo aún sirva la información. Saludos!
ResponderEliminar