¿Cómo puedo restaurar el control svn si la carpeta .svn está dañada?

Tengo un par de cajas grandes donde la carpeta .svn se dañó, así que estoy obteniendo un error, "La limpieza no pudo procesar la siguiente ruta ...". Y ya no puedo confirmar o actualizar archivos en ese directorio.

Me gustaría borrar y hacer el pago de nuevo, pero todo el directorio está terminado.

¿Hay alguna herramienta que restablezca las carpetas .svn para carpetas específicas sin tener que descargar todo?

Entiendo que tendrá que descargar todos los archivos en esa carpeta para que pueda determinar si se han modificado ... pero los subdirectorios con carpetas .svn válidas deberían estar bien.

Oh ... soy un gran admirador de TortoiseSVN o de la línea de comandos de linux.

¿Pensamientos?

0
agregado editado
Puntos de vista: 1

7 Respuestas

Si sabe qué carpeta tiene el directorio dañado .svn, puede simplemente eliminar ese directorio y ejecutar una actualización de svn nuevamente. Es posible que deba eliminar todo el directorio, incluidos sus contenidos actuales. Por supuesto, si la carpeta con el directorio dañado .svn es la que contiene un gigabyte, entonces estás de vuelta donde comenzaste.

0
agregado
Si tiene subversión <1.5 creo que esta podría ser la única opción.
agregado el autor nedned, fuente

He golpeado esto en el pasado y no encontré ninguna solución funcional, excepto la "opción nuclear" (es decir, eliminar el directorio y volver a realizar la comprobación).

No estoy seguro de si este es su problema, pero mi corrupción fue causada por un escáner de virus en el mismo equipo que el servidor SVN.

0
agregado
Acabo de hacer eso con Tortoise. Asegúrese de actualizar la url del repositorio para que coincida con la ruta de su carpeta, ya que probablemente no estará en la raíz haciendo esto.
agregado el autor Alex, fuente

En caso de que tenga cambios en los archivos y no pueda eliminarlos, puede usar la función Subversion 1.5 que le permite 'pagar con obstrucciones'.

Simplemente elimine el directorio .svn en este directorio y:
(No necesita eliminar directorios internos cuando usa --depth files, gracias Eric)

En caso de que el directorio roto sea el directorio superior de la copia de trabajo:

svn checkout --depth files --force REPOS WC

Y si el directorio sobre el que está roto aún está versionado, ejecuta:

svn update --depth files --force WC

en ese directorio.
En ambas muestras, REPOS es la url en el repositorio que coincide con el directorio roto, y WC es la ruta al directorio.

Los archivos que se modificaron originalmente estarán en estado modificado después de esto.

0
agregado
Pude evitar eliminar la carpeta .svn en subdirectorios agregando el archivo "--depth files" al comando de finalización de la compra. ¿Podría editar la publicación para reflejar eso y quizás aclarar el texto de REPOS y WC? ¡Gracias!
agregado el autor Eric Goodwin, fuente
thx, ayudó mucho!
agregado el autor Martin, fuente

Si los subdirectorios y OK y son los subdirectorios que son grandes, podría intentar un pago no recursivo fresco.

0
agregado

Haga una copia de seguridad de la carpeta que tiene el .svn faltante.

A continuación, elimine la carpeta

Si es la raíz del pago, tendrá que volver a pagar

Si no es la raíz, simplemente ejecute una actualización desde un directorio anterior.

A continuación, mueva la carpeta de respaldo encima de ella. (Lo ideal es no mover hacia atrás las carpetas .svn)

¡Continúa trabajando y asegúrate de actualizar/comprometer!

0
agregado

Encontré el mismo error hoy. Sucedió cuando intenté cambiar de rama y no eliminar uno de los archivos que no están en el repositorio svn. Después de eso, la carpeta se bloqueó y no puedo usar ningún comando para que funcione nuevamente.

Básicamente borré lo que tenía y rehice el pago. Lleva mucho tiempo, pero realmente quiero asegurarme de que svn esté claro antes de que pueda volver a trabajar. ¡Gracias!

0
agregado

La solución seleccionada funcionó para restaurar la carpeta .svn de nivel superior, pero no reconoce los objetos secundarios, por lo que todo parece extraño para SVN en este momento, a pesar de que el control de versiones está intacto en las subcarpetas.

0
agregado