svn - tag - ¿Cómo se elimina el control de Subversion para una carpeta?
tag svn (27)
Tengo una carpeta, c:/websites/test
, y contiene carpetas y archivos que se extrajeron de un repositorio que ya no existe. ¿Cómo puedo hacer que Subversion deje de rastrear esa carpeta y cualquiera de las subcarpetas y archivos?
Sé que simplemente podría eliminar la carpeta .svn
, pero hay muchas subcarpetas en muchas capas.
EL MEJOR Y MÁS FÁCIL CAMINO
¡Si crees que podrías ganar con un simple comando mágico, fallas! SVN es realmente complicado y siempre regresa de alguna manera con un nuevo mensaje de error en Xcode. Tarde o temprano, promételo ... ¡así que debes hacerlo de manera inteligente!
Como sabe, la práctica habitual y recomendada en Xcode es eliminar un archivo en el panel del proyecto a la izquierda. Si te lo perdiste y de alguna manera lo borraste en Finder, estás en problemas. ¡Gran problema! Pero podrías resolverlo y ahorrar tiempo si lo haces bien.
Primero, debe eliminar la referencia SVN al archivo o carpeta antes de poder eliminarla realmente
Si puede volver a colocar el archivo / carpeta de la papelera o deshacer el último paso cuando lo eliminó, entonces ...
Vaya a la Terminal, sí, la buena terminal antigua, y vaya a esa ubicación. De la mejor manera, simplemente escriba cd y luego tire de la carpeta / archivo al terminal. Obtendrás algo similar
cd / Users / UserName / Documents / Apps_Developing / ...
Podrías comprobar dónde estás.
ls
comando que lista tus archivos.
Entonces necesitas eliminar la referencia svn con un comando SVN:
svn delete --keep-local fileName_toDelete
Esto eliminará el archivo del repositorio de SVN, PERO tiene que eliminarlo manualmente en el Finder.
Además, si está utilizando TortoiseSVN, solo exporte a la ubicación actual de la copia de trabajo y eliminará las carpetas y archivos .svn.
Respuesta actualizada para Subversion 1.7:
En Subversion 1.7, la copia de trabajo ha sido revisada extensivamente. Solo hay una carpeta .svn, ubicada en la base de la copia de trabajo. Si está utilizando 1.7, entonces simplemente eliminar la carpeta .svn y su contenido es una solución fácil (independientemente de usar TortoiseSVN o las herramientas de la línea de comandos).
Como punto vital, cuando usa el shell para eliminar carpetas .svn, necesita el argumento -depth para evitar que el comando de búsqueda ingrese al directorio que se acaba de eliminar y muestre mensajes de error como, por ejemplo,
"buscar: ./.svn: no existe tal archivo o directorio"
Como resultado, puedes usar el comando de find
como abajo:
cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} /;
Cuando esté utilizando el sistema operativo Windows, vaya a la ubicación de su carpeta y verifique que los archivos ocultos estén abiertos, y luego puede ver la carpeta SVN allí. Sólo quita esa carpeta.
Descubrí que ni siquiera es necesario copiar en una ubicación temporal. Puedes hacer un
svn export --force .
y los archivos .svn se eliminarán in situ , dejando los otros archivos como están. Muy conveniente y menos propenso al desorden.
En Linux el comando es:
svn delete --keep-local file_name
En Linux, esto funcionará:
find . -iname ".svn" -print0 | xargs -0 rm -r
En Windows 10, debemos ir al Windows Explorer
y luego a View
y marcar la casilla de verificación View hidden files
.
Luego navegue a la carpeta que tiene el SVN vinculado en el Explorador de Windows y elimine la carpeta / archivo .svn
.
En Windows 7, solo puede abrir la carpeta del proyecto y hacer una búsqueda de ".svn" si los archivos ocultos están habilitados y eliminar todas las carpetas .svn encontradas.
En Windows, puede agregar un enlace rápido al menú de clic derecho del explorador. Simplemente inicie este script de registro:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT/Folder/shell/DeleteSVN]
@="Delete SVN Folders"
[HKEY_CLASSES_ROOT/Folder/shell/DeleteSVN/command]
@="cmd.exe /c /"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r /"%1/" %%f IN (.svn) DO RD /s /q /"%%f/" /""
Esto agregará un elemento llamado "Eliminar carpetas SVN" a su menú de clic derecho. Esto eliminará todas las carpetas .svn en esta carpeta y todas las subcarpetas.
Fuente (alemán): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/
Funciono bien para mi:
find directory_to_delete/ -type d -name ''*.svn'' | xargs rm -rf
Intente svn exportar .
Deberías poder hacer algo como esto:
svn export /path/to/old/working/copy /path/to/plain/code
Y luego simplemente borre la copia de trabajo anterior.
TortoiseSVN también tiene una función de exportación , que se comporta de la misma manera.
La respuesta es sorprendentemente simple: ¡ exporte la carpeta a sí misma ! TortoiseSVN detecta este caso especial y le pregunta si desea que la copia de trabajo no sea revisada. Si responde sí, se eliminarán los directorios de control y tendrá un árbol de directorios simple y sin versiones.
Los usuarios de NetBeans IDE pueden hacerlo de la siguiente manera:
- Abra el proyecto SVN en su IDE
Selecciona el proyecto
clic derecho Exportar Subversion
En el cuadro de dialogo
exportar a la carpeta / var / tmp / nombre de proyecto presionar exportar se mostrará completa preguntará si desea abrirlo, abrir sobre la marcha
Ahora puedes cambiar a Git :)
Mi idea es eliminar la carpeta .svn y luego mover todos los demás archivos a una nueva carpeta. Es tan simple como eso.
Ninguna de estas respuestas fue satisfactoria para mi situación. Estoy en Subversion 1.8 y tenía una copia de trabajo que solo tenía una única carpeta .svn
en la primera carpeta, raíz. Sin embargo, quería quitar algunas ramas de la copia de trabajo.
No importa lo que hice, siempre que ejecuté una ''actualización'', restauraría esos archivos y los devolvería a todos. No quería eliminarlos del repositorio, solo de mi computadora, pero necesitaba mantener el resto de la copia de trabajo intacta (por lo tanto, no podía eliminar la carpeta .svn).
¿Solución? svn update --set-depth exclude <dir>
Esta es una "actualización" del lado del cliente que excluye un directorio específico. Se puede encontrar en los manuales en svnbook.com . En resumen, describe esto como:
A partir de Subversion 1.6, puede adoptar un enfoque diferente. En primer lugar, echa un vistazo al directorio completo. Luego ejecute svn update --set-depth exclude en el subdirectorio que no le interesa.
Para TortoiseSVN, también puede hacer lo mismo haciendo clic con el botón derecho en la carpeta que no desea, hacer clic en Update to revision...
y luego configurar ''Profundidad de actualización'' en Exclude
, como se ve en esta captura de pantalla:
Otra solución de Linux (más simple):
rm -r `find /path/to/foo -name .svn`
Para aquellos que usan NetBeans con SVN, hay una opción ''Subversion> Exportar''.
Puede usar "svn exportar" para crear una copia de esa carpeta sin datos svn, o puede agregar esa carpeta para ignorar la lista
Si está ejecutando Windows, puede hacer una búsqueda en esa carpeta para .svn
y eso los incluirá a todos. Al presionar Ctrl + A se seleccionarán todos ellos y al presionar eliminar se eliminarán todas las cosas ''molestas'' de Subversion.
Simplemente elimine la carpeta .svn dentro de la carpeta requerida y el control se eliminará automáticamente.
Sin subshells en Linux para eliminar carpetas .svn
:
find . -name .svn -exec rm -r -f {} +
rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
También hay una pequeña herramienta de código abierto llamada SVN Cleaner que agrega tres opciones al menú contextual del Explorador de Windows:
- Eliminar todo .svn
- Eliminar todo menos la raíz .svn
- Eliminar archivos de repositorios locales
Utilice el comando de svn export
:
cd c:/websites/test
svn export c:/websites/test_copy
Todos los archivos bajo control de versión serán exportados. Comprueba que no te hayas perdido nada.
Yo uso rsync:
# copy folder src to srcStripped excluding subfolders named ''.svn''. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
svn export
funciona bien, pero creo que esto es:
svn rm --keep-local <folder/file>
Lo elimina de tu repositorio local.