2008-09-18 12 views
24

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.¿Cómo puedo restaurar el control svn si la carpeta .svn está dañada?

Me gustaría simplemente eliminar y hacer el pago de nuevo, pero todo el directorio es más de un concierto.

¿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 cambiado ... 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?

Respuesta

20

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 es necesario eliminar directorios dentro cuando se utilizan archivos --depth, gracias Eric)

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

svn checkout --depth files --force REPOS WC 

y ejecutar si el directorio superior al que rota todavía se versiona:

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

Pude evitar borrar 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! –

+0

thx, ayudó mucho! – Mobbit

2

He golpeado esto en el pasado y no encontré ninguna solución de trabajo 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

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. – Alex

5

Si sabe qué carpeta tiene el directorio dañado .svn, puede simplemente eliminar ese directorio y ejecutar una actualización 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

Si tiene subversión <1.5 creo que esta podría ser la única opción. – nedned

1

Si los subdirectorios y OK y son los subdirectorios que son grandes, podría intentar una extracción no recursiva.

3

Hacer una copia de seguridad de la carpeta que tiene la falta Svn

continuación, elimine la carpeta

Si es la raíz de la caja, que tendrá que volver a la caja

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

A continuación, mueva la carpeta de la copia de seguridad en la parte superior. (Lo ideal es no mover hacia atrás las carpetas .svn)

¡Continúe trabajando y asegúrese de actualizar/confirmar!

0

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!

1

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

Cuestiones relacionadas