Subversion atascado debido a "la operación anterior no ha terminado"?


229

Si trato de actualizar mi repositorio de subversión, dice que debo ejecutar la limpieza. Si ejecuto la limpieza, dice que falta un archivo. (Eliminé un directorio MASIVO de archivos que no se pudo confirmar esta mañana desde mi PC local, pero luego confirmo el mismo conjunto de archivos del trabajo, y ahora mi repositorio principal está en quiebra). Entonces, la limpieza dice:

Error de limpieza al procesar blablabla No se puede configurar el archivo blablabla lectura-escritura: el sistema no puede encontrar el archivo especificado.

Si actualizo dice:

Comando: Error de actualización: la operación anterior no ha finalizado; ejecute 'cleanup' si fue interrumpido Error: ejecute el comando 'Cleanup'. ¡Terminado!:

¿Cómo consigo este despegue?


(aparte de eliminar toda la información SVN y volver a verificar)
coderama

3
ese molesto error es por qué odio svn. Cada vez que enfrento esto, tengo que volver a pagar porque la limpieza de la carpeta raíz o la carpeta principal no funciona. Pero el mayor problema es que no muestra los iconos de superposición en ese momento, así que no sé qué archivo se ha cambiado a la copia de seguridad antes de la salida
phuclv

La publicación de @ sigurd-v es la verdadera respuesta a la pregunta que me ayudó a mí y a muchos otros: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Respuestas:


102

He estado en situaciones similares. ¿Has intentado ejecutar la limpieza desde la raíz de tu espacio de trabajo? Sé que a veces una limpieza desde un directorio secundario (donde se encuentra el problema) no funciona, y la limpieza desde la raíz del espacio de trabajo sí.

Si eso todavía falla, ya que había eliminado un directorio secundario en alguna parte. Intente eliminar 1 nivel más alto del directorio secundario también (suponiendo que no sea la raíz), y vuelva a intentar la actualización y limpieza.

Si los intentos de limpieza no tienen éxito en ningún nivel, entonces la respuesta es desafortunadamente pagar una nueva copia de trabajo.


44
para limpiar del directorio secundario! ¡Esto funciona para mi!
Franva

1
Si estás leyendo esto, estás en problemas :) Nunca me encontré con un lío con Git (hasta ahora). Terminé limpiando / revertiendo / limpiando, etc. en cualquier directorio que pudiera, si Svn me lo permitía.
aliopi

2
La publicación de @ sigurd-v es la verdadera respuesta a la pregunta que me ayudó a mí y a muchos otros: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Ejecuté la limpieza desde Windows FileExplorer (con Turtoise) y me dio un error más elaborado que me dijo cuál era el archivo con el problema, de alguna manera SVN perdió ese archivo, un archivo darm * .cache, así que tomé otro .cache y renómbrelo para reemplazar el archivo faltante, ejecute la limpieza, no hay errores esta vez, TODO FIJO !!
Jhollman

331

A menudo no hay necesidad de un nuevo pago o copia.

Acabo de resolver un problema similar relacionado con el error "la operación anterior no ha terminado" con la ayuda de esto ( Enlace )

Parece que svn a veces se atasca al procesar comandos / operaciones. Todas estas operaciones se almacenan en el archivo de base de datos wc.db en la carpeta .svn.

Al descargar SQLite en mi directorio de pago y ejecutar

sqlite3.exe .svn/wc.db "select * from work_queue"

Puede obtener una lista de todas las operaciones pendientes. Estas operaciones son las que el error se refiere como "no terminado".

Mediante la ejecución

sqlite3.exe .svn/wc.db "delete from work_queue"

Todas las operaciones anteriores se eliminan de la cola de trabajo y el error desaparece. No es necesario un nuevo pago ni nada


55
Siempre debe intentar ejecutar la limpieza antes de probar la solución anterior. Esto funciona si desea tener un repositorio SVN atascado en funcionamiento sin tener que pagar una nueva copia de trabajo.
Sigurd V

77
La descarga de sqlite.exe y la ejecución de la eliminación fue en realidad más rápida que verificar y fusionar - gran respuesta
Jeffrey Knight

12
También me he "bloqueado" después de esto, pero lo he superado con una "limpieza svn"
Jeffrey Knight

1
Ejecuté esto en Debian, instalo usando apt-get install sqlite3, luego puede ejecutar los comandos anteriores sin el .exe
Richard Merchant

3
También recibí el mensaje 'bloqueado', pero luego ejecuté el comando 'Limpiar' marcando la casilla que dice "rompe bloqueos", y funcionó
McCoy

114

Ejecutar la consola me svn cleanupha resuelto el mismo problema.


20
El comando de consola svn cleanuptambién proporcionará información más detallada que el uso del complemento Tortoise Explorer, lo que lo hace muy útil en situaciones como esta.
Brandon S

77
Ejecutar el comando de consola probablemente proporcionará suficiente información para resolver el problema. Esta es una respuesta mucho mejor.
DDS

1
Bueno, seleccioné la carpeta más superior y usé svn cleanup, gracias
deadfish

A menudo he tenido éxito al recorrer directorios principales y ejecutar la limpieza en ellos, pero es un poco lento y 'mágico'. Nunca supe que esto devolvería un error detallado, +1.
Phil Cooper el

Cuando corras svn cleanup, asegúrate de que la consola esté elevada. No hice esto inicialmente y recibí el red-write: Access is deniederror.
Tony

26

Acabo de tener un problema similar. Running Process Explorer mostró que otro programa (Notepad ++) tenía un identificador de archivo en una carpeta que SVN había intentado eliminar. Cuando cerré Notepad ++, "Clean Up" pudo ejecutarse con éxito.


Eso podría producir el problema mencionado en la pregunta. Pero me temo que no puede liquidarlo si ya sucedió.
Gangnus

19

Estaba enfrentando este problema después de agregar un jar que ya está en el SVN y agregué la nueva versión con el mismo nombre.

En Eclipse probé esto

  1. Haga clic derecho en la carpeta> Equipo> Actualizar / Limpiar.
  2. Limpiar, compilar y actualizar mi aplicación.
  3. Reinicia el Eclipse.

Utilizando los pasos anteriores, puedo sincronizar.


1
Trabajó para mi. Simplemente, el tercer paso no es obligatorio (reinicie Eclipse).
jpmottin

Esto también funcionó para mí, intenté muchas cosas pero no funcionó. Cerré mi estudio visual y realicé la limpieza. muchas gracias
AhammadaliPK

18

Había intentado las respuestas más votadas aquí y algunas otras en vano. Mi WORK_QUEUEmesa estaba vacía y no pude intentar limpiar en una carpeta más alta. Lo que funcionó fue lo siguiente (esto es a través de Tortoise SVN);

  • Haga clic derecho en la carpeta
  • Vaya a TortoiseSVN -> Limpiar ...
  • Asegúrese de que la opción Break Locksesté marcada y haga clic en Aceptar

La operación de limpieza ahora se completa con éxito y puedo continuar. No es necesario descargar sqlite3 u otras soluciones complicadas.


2
Romper cerraduras no hace lo que pensaba. Solo rompe los bloqueos locales que usa en su sistema. No cerraduras que alguien más ha establecido.
Brian Carlton

1
sqlite3 a veces resolvió mi problema, pero ese método era demasiado difícil de recordar y la limpieza fallaba con tanta frecuencia. Este método me salvó ..
sc

9

Intentar ejecutar la limpieza mientras tus archivos están abiertos me dio problemas. Tan pronto como cerré mi aplicación (Visual Studio), corrí la limpieza y fue exitosa


1
Cierto. Asegúrese de que sus archivos no estén en uso o desprotegidos como un usuario diferente, como Administrador en Windows.
froggythefrog

6

Yo uso tortuga SVN. Cuando la limpieza falla, verifique la opción de limpieza

Asegúrate de que la opción de romper cerraduras esté marcada.

Paso de limpieza

  • botón izquierdo del mouse en la carpeta de exploración
  • seleccione 'Tortoise SVN' -> menú 'Limpiar ...'
  • marque ' Romper cerraduras ' marcado y presione 'ok'

Ya respondió, pero a veces la imagen ayuda

ingrese la descripción de la imagen aquí


4

Tengo el mismo problema, en mi caso estaba usando svn tortoise con la aplicación que quiero decir. Usando el shell cmd de Windows en modo raíz, apliqué svn cleanup y luego svn update ... ¡Entonces puede volver al modo de aplicación y funcionará perfectamente!


2

Intenté eliminar la carpeta .svn a otra ubicación y la volví a colocar en la misma carpeta raíz. Luego, cuando intenté actualizar el SVN, se actualizó. No sé exactamente cómo funcionó.


2

Tuve el mismo problema, y ​​de alguna manera descubrí que tenía un archivo .svn oculto en el nivel c: \. Una vez que eliminé esta carpeta oculta (.svn), todo funcionó bien. Debo haber creado involuntariamente un directorio de trabajo en la unidad raíz.


2

En mi caso, tenía un reloj de gulp que causaba los problemas. Después de detenerlo, podría ejecutar el comando de limpieza.


Esto me ayudó a matar una JVM no deseada y progresar.
Plato

2

hola chicos en mis casos después de que cierre Visual Studio y vuelva a intentarlo para que funcione, que lo pasen bien


2

También me he quedado con el mismo problema que he intentado soplar:

1. Intente eliminar el proceso relacionado con svn, es decir, TSVNCache.exe y TortoiseProc 2. Revertir los archivos no versionados y eliminarlos, que tengo en svn. 3.Limpie usando el símbolo del sistema "svn cleanup"

y finalmente cuando reinicié el escritorio funcionó para mí, así que para reiniciar el sistema funcionó para mí


1

elimine el svn de la carpeta principal y reemplácelo de otra copia viable que tenga de elsewere.y luego actualícelo. La carpeta svn será normalmente una carpeta oculta. Por lo tanto, asegúrese de mostrar la carpeta antes de realizar los pasos anteriores.


1

Solución que funcionó para mí:

  1. Corte el contenido de su directorio y cópielo en otra carpeta.
  2. Ejecute la limpieza desde la línea de comandos en la carpeta vacía.
  3. Copie los archivos nuevamente en la carpeta original.

Hecho, pero no puedo explicar por qué sucede esto. Si no elimina los archivos, el comando de limpieza dice que no puede leer / escribir esos archivos.


1

Tuve el mismo problema, lo que funcionó para mí:

  1. Copie sus carpetas y archivos a otro lugar, digamos a una carpeta (cambié mis archivos recientemente y el compromiso falló y condujo al problema abordado)
  2. mira una nueva copia de trabajo
  3. copie los archivos modificados de la carpeta a su copia de trabajo y anule los archivos existentes. Comprometerse / Actualizar debería funcionar ahora

1

Tuve un error como "No se pueden cambiar las permanentes del archivo '/Users/Code/UnitTest.cpp': No existe tal archivo o directorio". La subversión está confundida acerca de un archivo que ya no está allí. Simplemente hice algo como "echo ABCD >> /Users/Code/UnitTest.cpp" para crear una copia del archivo y luego limpiarlo. Funcionó.


1

En mi caso, el error apareció al intentar confirmar desde un IDE. Cuando ejecuté el commit de los mismos directorios con TortoiseSVN en el explorador, la operación tuvo éxito.


1

Eso me sucedió cuando usé externos y uno de ellos estaba corrupto. Tuve que ir a esa carpeta y realizar una limpieza. Luego, la limpieza funcionó para toda la copia de trabajo.

Ejemplo: uso externo ^/widgets/foo common/foo-widget, primero realice la limpieza en la carpeta common/foo-widget.


1

Resolví este error hoy cuando ocurrió tratando de comprometerse con SVN. El error fue genuino, TortoiseSVN no pudo acceder a un archivo que intenté confirmar. Este archivo se guardó mientras ejecutaba un programa "Como administrador" en Windows. Esto significa que el archivo tiene acceso de administrador pero no acceso desde mi cuenta (TortoiseSVN se ejecuta como usuario interactivo). Tomé la propiedad del archivo designado en mi cuenta de Windows y después de eso, la limpieza pudo continuar.


0

Inicialmente tuve este problema al intentar registrarme con TortoiseSVN. Inicialmente, ambos, la limpieza de TortoiseSVN y la limpieza de la consola svn fallaron con mensajes similares a los del póster original.

Pero mi solución, (descubrí accidentalmente) fue solo esperar unos minutos. Estoy pensando que TSVNCache estaba reteniendo algunos de esos archivos en el momento del registro.


0

siga los pasos a continuación.

1) Vaya al directorio donde no puede limpiar con éxito a través de svn (carpeta raíz o carpeta secundaria).

2) Seleccione .svn carpeta en el directorio, corte esa carpeta y péguela en la unidad separada o en una ubicación separada (fuera del directorio svn)

3) Ahora, regrese al directorio - haga clic derecho y seleccione TortoiseSVN -->Repo-browser

4) Checkoutla carpeta (no realizará un nuevo pago).

5) Todos sus artículos serán versionados nuevamente, y reparará el problema interno de svn, y el problema debería resolverse.


SOLO realiza el pago completo. alguna ayuda ?
candidJ

0

En mi caso, se estaba ejecutando una instancia de Java Virtual Machine en segundo plano, eliminando qué limpieza fue exitosa.


0

Había tomado la carpeta .svn de mi compañero desarrollador y reemplacé mi carpeta .svn con esto. Funcionó para mi. ¡No sé cuáles pueden ser otras consecuencias!


0

Usando este enlace, https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

Noté que el tutorial tenía las 6 mejores opciones marcadas. Desesperado, lo intenté usando esas casillas marcadas y, para mi sorpresa, funcionó. Asegúrese de leer cuidadosamente lo que cada uno hace. Mirando la descripción de cada uno, parecía seguro incluirlos para mí, por lo que uno de esos elementos marcados parecía haber solucionado cualquier problema que me detuviera.


0

Esto puede suceder cuando todavía tiene archivos abiertos cuando intenta cambiar / limpiar SVN.

Tenía una rama donde había creado un nuevo archivo, que había abierto en otra aplicación. El cambio a otra rama no pudo eliminar el archivo, lo que provocó que el cambio fallara. Esto también estaba causando el svn cleanuperror, sin embargo, esto no se muestra como la razón en la interfaz de usuario de Tortoise SVN.

Ejecutar svn cleanupdesde una ventana de consola (en la carpeta raíz) muestra claramente el errorfile\location\file.ext: The process cannot access the file because it is being used by another process

El cierre de cualquier archivo abierto maneja / ventanas y ejecuta la consola y svn cleanupluego permite que la limpieza funcione correctamente.

Larga historia corta: ejecute svn cleanupen la consola para ver un error más detallado.


0

Además de la respuesta de Sigurd V (debe intentarlo primero), algunas bases de código más grandes tienen múltiples carpetas '.svn', y no es necesariamente la que está en el directorio raíz que tiene la tarea bloqueada.

Si ese es el caso, debe verificar cada uno. Si ya tiene SQLite y Powershell, puede localizar el directorio infractor rápidamente.

Para encontrar qué carpetas están bloqueadas, ejecute (reemplazando path\to\sqlite.exe ):

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } }.

Esto proporciona una lista de directorios .svn y, debajo de cada uno, una lista de las tareas actuales.

Si hay alguna con tareas sin terminar, para cada una de ellas (reemplazando path\to\sqlite.exey path\to\.svn\wc.db):

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"


0

He visto varios problemas con svn, incluido este, resueltos eliminando / creando un .svn/tmpdirectorio. Entonces corresvn cleanup


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.