¿Cómo se elimina el control de Subversion para una carpeta?


259

Tengo una carpeta, c:\websites\testy contiene carpetas y archivos que se extrajeron de un repositorio que ya no existe. ¿Cómo consigo que Subversion deje de rastrear esa carpeta y cualquiera de las subcarpetas y archivos?

Sé que podría simplemente eliminar la .svncarpeta, pero hay muchas subcarpetas en muchas capas.


1
Si está utilizando TortioseSVN, escribí una publicación de blog que muestra la forma más rápida de hacerlo. Mi publicación tiene instrucciones paso a paso con imágenes. Esa publicación está disponible en http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell

Consulte mi respuesta que ha ayudado a muchos. stackoverflow.com/questions/4889619/…
Ajit Vaze

Respuestas:


258

Además, si está utilizando TortoiseSVN, simplemente exporte a la ubicación de copia de trabajo actual y eliminará las carpetas y archivos .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Respuesta actualizada para Subversion 1.7:
En Subversion 1.7, la copia de trabajo se ha revisado ampliamente. Solo hay una carpeta .svn, ubicada en la base de la copia de trabajo. Si está utilizando 1.7, simplemente eliminar la carpeta .svn y su contenido es una solución fácil (independientemente del uso de TortoiseSVN o las herramientas de línea de comandos).


8
El enlace ahora es un 404. Nuevo enlace: tortoisesvn.net/docs/release/TortoiseSVN_en/… La exportación sobrecorriente parece ser solo un caso especial que solo elimina los archivos .svn si dice que también mantenga archivos no versionados.
lilbyrdie 01 de

después de una eliminación exitosa para recuperar el icono de su carpeta en el reinicio normal del servidor svn y eso es todo
3ehrang

El servidor no tendría nada que ver con los iconos de la carpeta Tortoise. Pero si no se actualizan, puede intentar matar el proceso TSVNCache. Debería reiniciarse automáticamente.
crashmstr

1
En mi caso, eliminé la carpeta git también junto con la carpeta .svn
Aftab Ahmed Kalhoro

155

En Linux, esto funcionará:

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
Funciona en Mac OS también.
Emish

2
antes de ejecutar el comando, asegúrese de ingresar el directorio adecuado, por ejemplo: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

Obtengo rm: operando perdido
Invierno

119

Prueba svn export .

Deberías poder hacer algo como esto:

svn export /path/to/old/working/copy /path/to/plain/code

Y luego simplemente elimine la copia de trabajo anterior.

TortoiseSVN también tiene una función de exportación , que se comporta de la misma manera.


44
Gracias por proporcionar una respuesta que funcione con la línea de comando. :) Genial para aquellos de nosotros que usamos terminales.
epochwolf

16
Si entiendo correctamente, este comando solo exportará los archivos actualmente bajo control de subversión. Entonces, si algunos archivos o carpetas aún no se han agregado a Subversion o se eliminaron del control de subversión, perderá estos archivos en su exportación ...
Chris

@ Chris, sí, tienes razón. Esto solo exportará los archivos versionados. Esto es bueno para exportar el código y dejar atrás artefactos derivados, etc., pero podría no ser la herramienta adecuada para cada trabajo.
pkaeding

44
Vale la pena comentar que esto todavía funciona si el servidor SVN ya no existe; si intenta exportar utilizando VisualSVN o Tortoise SVN, parece que intenta ponerse en contacto con el servidor, pero la versión de la línea de comandos anterior funcionó para mí sin que el servidor SVN todavía se esté ejecutando.
Dave

Me sale un error:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

Si está ejecutando Windows, puede hacer una búsqueda en esa carpeta .svny eso los enumerará a todos. Presionando Ctrl+ Alos seleccionará a todos y presionando eliminar eliminará todas las cosas 'molestas' de Subversion.


molesto de hecho ;-) Solo necesito limpiarlo y lo devolveré a un nuevo repositorio.
Brian Boatright

2
¡esa también es una GRAN manera de eliminar las carpetas de extensiones de portada más molestas!
Brian Boatright

Descargue y use la utilidad Everything Search para buscar y eliminar carpetas .svn a la velocidad de la luz :) voidtools.com ¡Solo para Windows!
endo64


21

Descubrí que ni siquiera necesita copiar a 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.


44
No sé qué es, pero no me funcionó por alguna razón.
Aries VII

1
Este comando solo funciona para la copia de trabajo, no para una carpeta dentro de ella. Tal vez una variante de lo mismo ...?

2
Esto no funcionará si la versión instalada de Subversion es 1.7 y el repositorio es 1.6. Sin embargo, "svn upgrade" se puede ejecutar antes de la exportación y funcionará.
Peter Mortensen

11

Sin subcapas en Linux para eliminar .svncarpetas:

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".

8

Ninguna de estas respuestas fue satisfactoria para mi situación. Estoy en la subversión 1.8 y tenía una copia de trabajo que solo tenía una sola .svncarpeta en la primera carpeta, root. Sin embargo, quería eliminar algunas ramas de la copia de trabajo.

No importa lo que hice, cada vez que ejecutaba una 'actualización' restauraba esos archivos y los recuperaba a todos. No quería eliminarlos del repositorio, solo de mi computadora, pero necesitaba mantener intacta el resto de la copia de trabajo (por lo tanto, no podía simplemente 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. Primero, revise el directorio completo. Luego ejecute svn update --set-depth exclude en el único 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, haga clic en Update to revision..., y luego configure 'Actualizar profundidad' en Exclude, como se ve en esta captura de pantalla:

ingrese la descripción de la imagen aquí


Sin embargo, no puede eliminar las carpetas raíz de la copia de trabajo.
JaBe

8

Funciono bien para mi:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

Esta es una solución tan simple, pero funciona como un encanto.
IgorGanapolsky

@IgorGanapolsky me alegro. Mi solución te ayudó.
Manikandan S

siempre y cuando nadie haya corrido mkdir -p ';echo Hi Johnny;/.svn', en ese caso la {} invocación de find todavía debería funcionar, sin embargo
nunca duermas otra vez el

7

Usa el svn exportcomando:

cd c:\websites\test
svn export c:\websites\test_copy

Todos los archivos bajo control de versiones serán exportados. Vuelva a verificar para asegurarse de que no se haya perdido nada.


4

Simplemente elimine la carpeta .svn dentro de la carpeta requerida, luego el control se eliminará automáticamente.


3

En Windows, puede agregar un enlace rápido para eso al menú contextual de su 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/


2

Puede usar "svn export" para crear una copia de esa carpeta sin datos de svn, o puede agregar esa carpeta para ignorar la lista


2

Para aquellos que usan NetBeans con SVN, hay una opción 'Subversion> Exportar'.


2

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



1

La respuesta es sorprendentemente simple: ¡ exporte la carpeta a sí mismo ! TortoiseSVN detecta este caso especial y le pregunta si desea que la copia de trabajo no esté versionada. Si responde que sí, los directorios de control se eliminarán y tendrá un árbol de directorios sin versión.


1
¿No es solo volver a citar la respuesta aceptada dada hace 5 años?
Ben Thurley

1

Otra solución de Linux (más simple):

rm -r `find /path/to/foo -name .svn`

1

LA MEJOR Y MÁS FÁCIL MANERA

Si crees que podrías ganar con un simple comando mágico, ¡has fallado! 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 tienes que hacerlo de manera inteligente!

Como sabe, la práctica habitual y mejor 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ía resolverlo y tener tiempo libre si lo hace bien.

Primero, debe eliminar la referencia SVN al archivo o carpeta antes de poder eliminarlo realmente

  1. Si pudiera volver a colocar el archivo / carpeta de la papelera o deshacer el último paso cuando lo eliminó, entonces ...

  2. Vaya a la Terminal, sí, la buena y antigua terminal, y vaya a esa ubicación. La mejor manera es simplemente escribir cd y luego extraer la carpeta / archivo a la Terminal. Obtendrás algo similar

cd / Users / UserName / Documents / Apps_Developing / ...

Podrías comprobar dónde estás

ls

comando que enumera sus archivos.

  1. Luego debe eliminar la referencia svn con un comando SVN:

    svn delete --keep-local fileName_toDelete

Esto eliminará el archivo del repositorio SVN, PERO debe eliminarlo manualmente en Finder.


0

Yo uso rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

Los usuarios de NetBeans IDE pueden hacerlo de la siguiente manera:

  1. Abra el proyecto SVN en su IDE
  2. Selecciona el proyecto

    haga clic derecho en Subversion Exportar

  3. En el cuadro de diálogo

    exportar a carpeta / var / tmp / nombre del proyecto presione exportar esperar se mostrará completo le preguntará si desea abrirlo abrir sobre la marcha

  4. Ahora puedes cambiar a Git :)


0

Mi idea es eliminar la carpeta .svn y luego mover todos los demás archivos a una nueva carpeta. Es tan simple como eso.


0

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í. Simplemente elimine esa carpeta.


0

svn export funciona bien, pero creo que esto es:

svn rm --keep-local <folder/file>

Lo elimina de su repositorio local.


0

Como punto vital, cuando utiliza el shell para eliminar carpetas .svn, necesita el argumento -depth para evitar que el comando find ingrese al directorio que acaba de eliminar y muestre mensajes de error como, por ejemplo,

"find: ./.svn: No existe tal archivo o directorio"

Como resultado, puede usar el findcomando como se muestra a continuación:

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


0

Use lo siguiente:

svn rm --keep-local <folder name> para eliminar la carpeta y todo lo que contiene.

svn rm --keep-local <folder name>/* para mantener la carpeta, pero elimine todo lo que está dentro de la carpeta.

Aquí hay un ejemplo de lo que sucede:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

En Windows 10, debemos ir a Windows Explorer, y luego ir a Viewy 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 .svncarpeta / archivo.


Aunque edité el formato, esta respuesta en realidad no responde la pregunta. El usuario ya sabe cómo eliminar la .svncarpeta base , pero está preguntando por todas las subcarpetas. Por favor, lea la pregunta a fondo.
CodeMouse92
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.