Sovversione bloccata a causa di "l'operazione precedente non è terminata"?


229

Se provo ad aggiornare il mio repository Subversion, dice che devo eseguire cleanup. Se eseguo cleanup, dice che manca un file. (Ho cancellato una directory MASSIVE di file che non è stato possibile eseguire il commit questa mattina dal mio PC di casa, ma poi ho commesso lo stesso set di file dal lavoro, e ora il mio repository home è fallito). Quindi, la pulizia dice:

La pulizia non è riuscita a elaborare blablabla Impossibile impostare il file blablabla lettura-scrittura: il sistema non è in grado di trovare il file specificato.

Se aggiorno dice:

Comando: Errore di aggiornamento: l'operazione precedente non è terminata; eseguire 'cleanup' se è stato interrotto Errore: eseguire il comando 'Cleanup'. Completato!:

Come posso sbloccarlo?


(diverso dall'eliminazione di tutte le informazioni SVN e dal check-out)
coderama,

3
questo fastidioso errore è il motivo per cui odio svn. Ogni volta che devo affrontare questo devo ricontrollare perché la pulizia dalla cartella principale o dalla cartella principale non funziona. Ma il problema più grande è che in quel momento non mostra icone di sovrapposizione, quindi non so quale file è stato modificato in backup prima del check-out
phuclv,

Il post di @ sigurd-v è la vera risposta alla domanda che mi ha aiutato e molti altri: stackoverflow.com/a/22717607/5613292
Mehdi Javan,

Risposte:


102

Sono stato in situazioni simili. Hai provato a eseguire la pulizia dalla radice dell'area di lavoro? So che a volte una pulizia da una directory figlio (dove si trova il problema) non funziona, e la pulizia dalla radice dell'area di lavoro funziona.

Se il problema persiste, dato che hai eliminato una directory figlio da qualche parte. Prova a eliminare anche 1 livello superiore dalla directory figlio (supponendo che non sia la radice) e riprova ad aggiornare e pulire.

Se i tentativi di pulizia non riescono a nessun livello, la risposta è purtroppo da una nuova copia funzionante.


4
per ripulire dal bambino dir! Per me funziona!
Franva,

1
Se stai leggendo questo, sei nei guai :) Non ho mai incontrato un tale casino con Git (finora). Ho finito per pulire / ripristinare / pulire ecc. Su qualsiasi directory che potevo, se Svn me lo avesse permesso.
aliopi,

2
Il post di @ sigurd-v è la vera risposta alla domanda che mi ha aiutato e molti altri: stackoverflow.com/a/22717607/5613292
Mehdi Javan,

Ho eseguito Cleanup da FileExplorer di Windows (con Turtoise) e mi ha dato un errore più elaborato che mi ha detto qual era il file con il problema, in qualche modo SVN ha perso quel file, un file darm * .cache, quindi ho preso un altro .cache e rinominalo per sostituire il file mancante, esegui la pulizia, nessun errore questo tempo, TUTTO RISOLTO !!
Jhollman,

331

Spesso non è necessario un nuovo checkout o una copia.

Ho appena risolto un problema simile relativo all'errore "operazione precedente non terminata" con l'aiuto di questo ( Link )

Sembra che a volte svn si blocchi durante l'elaborazione di comandi / operazioni. Tutte queste operazioni sono archiviate nel file di database wc.db nella cartella .svn.

Scaricando SQLite nella mia directory di checkout ed eseguendolo

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

è possibile ottenere un elenco di tutte le operazioni in sospeso. Queste operazioni sono quelle a cui l'errore si riferisce come "non finito".

Correre

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

tutte le vecchie operazioni vengono eliminate dalla coda di lavoro e l'errore scompare. Non c'è bisogno di un nuovo checkout o altro


5
Dovresti sempre provare a eseguire la pulizia prima di provare la soluzione sopra. Funziona se vuoi avere un repository SVN bloccato attivo e funzionante senza dover fare il checkout di una nuova copia funzionante.
Sigurd V,

7
Il download di sqlite.exe e l'esecuzione dell'eliminazione sono stati effettivamente più rapidi del check-out e della fusione - ottima risposta
Jeffrey Knight,

12
Ho anche ottenuto un "bloccato" dopo questo ma l'ho superato con un "svn cleanup"
Jeffrey Knight,

1
Ho eseguito questo su Debian, installa usando apt-get install sqlite3, quindi puoi eseguire i comandi sopra senza .exe
Richard Merchant

3
Ho anche ricevuto il messaggio "bloccato", ma poi ho eseguito il comando "Pulisci" selezionando la casella che dice "rompe i blocchi" e ha funzionato
McCoy,

114

La console in esecuzione svn cleanupha risolto lo stesso problema per me.


20
Il comando console svn cleanupfornirà anche informazioni più dettagliate rispetto all'utilizzo del plug-in Tortoise Explorer, il che lo rende molto utile in situazioni come questa.
Brandon S,

7
L'esecuzione del comando console probabilmente fornirà informazioni sufficienti per risolvere effettivamente il problema. Questa è una risposta molto migliore.
DDS,

1
bene ho selezionato la cartella più in alto e ho usato svn cleanup, grazie
deadfish

Ho spesso avuto successo nel percorrere le directory dei genitori e nel ripulirle, ma è un po 'dispendioso in termini di tempo e "magia". Non ho mai saputo che questo avrebbe restituito un errore dettagliato, +1.
Phil Cooper,

Quando corri svn cleanup, assicurati che la console sia elevata. Inizialmente non l'ho fatto e ho riscontrato l' red-write: Access is deniederrore.
Tony

26

Ho appena avuto un problema simile. L'esecuzione di Process Explorer mostrava che un altro programma (Notepad ++) aveva un handle di file in una cartella che SVN aveva tentato di eliminare. Quando ho chiuso Notepad ++, "Clean Up" è stato in grado di funzionare correttamente.


Ciò potrebbe produrre il problema menzionato nella domanda. Ma temo che non possa liquidarlo se è già successo.
Gangnus,

19

Stavo affrontando questo problema dopo aver aggiunto un jar che è già in SVN e ho aggiunto la nuova versione con lo stesso nome.

In Eclipse ho provato questo

  1. Fare clic con il tasto destro sulla cartella> Team> Aggiorna / Pulizia.
  2. Pulisci, crea e aggiorna la mia applicazione.
  3. Riavvia Eclipse.

Utilizzando i passaggi precedenti sono in grado di sincronizzare.


1
Ha funzionato per me. Solo, il terzo passaggio non è obbligatorio (riavvia Eclipse).
jpmottin,

Questo ha funzionato anche per me, ho provato tante cose ma non ha funzionato. Ho chiuso il mio studio visivo e ho eseguito la pulizia. grazie mille
AhammadaliPK il

18

Avevo provato le risposte più votate qui e alcuni altri senza risultati. Il mio WORK_QUEUEtavolo era vuoto e non ero in grado di provare a ripulire in una cartella superiore. Ciò che ha funzionato è stato il seguente (questo è via Tortoise SVN);

  • Fare clic con il tasto destro sulla cartella
  • Vai a TortoiseSVN -> Pulizia ...
  • Assicurati che l'opzione to Break Lockssia selezionata e fai clic su OK

L'operazione di pulizia ora viene completata correttamente e posso continuare. Non è richiesto il download di sqlite3 o altre soluzioni contorte.


2
I blocchi di sicurezza non fanno ciò che pensavo. Si rompe solo i blocchi locali che utilizza sul sistema. Non blocca che qualcun altro ha impostato.
Brian Carlton,

1
A volte sqlite3 ha risolto il mio problema, ma quel metodo era troppo difficile da ricordare e la pulizia falliva così spesso. Questo metodo mi ha salvato ..
sc

9

Cercare di eseguire la pulizia mentre i file sono aperti mi ha dato problemi. non appena ho chiuso la mia applicazione (Visual Studio) ho eseguito la pulizia e ha avuto successo


1
Vero. Assicurati che i tuoi file non vengano utilizzati o estratti come utente diverso come Amministratore su Windows.
froggythefrog,

6

Uso la tartaruga SVN. Quando la pulizia non è riuscita, selezionare l'opzione di pulizia

Assicurati che l'opzione Rompa blocchi sia selezionata.

Fase di pulizia

  • tasto sinistro del mouse nella cartella esplora
  • seleziona 'Tortoise SVN' -> menu 'Pulisci ...'
  • seleziona ' Break Locks ' selezionato e premi 'ok'

Ha già risposto, ma a volte l'immagine aiuta

inserisci qui la descrizione dell'immagine


4

Ho avuto lo stesso problema, nel mio caso stavo usando svn tortoise con l'applicazione intendo. Usando la shell cmd di windows in modalità root ho applicato svn cleanup e poi svn update .... Quindi puoi tornare alla modalità applicazione e funzionerà perfettamente!


2

Ho provato a rimuovere la cartella .svn in un'altra posizione e l'ho rimessa nella stessa cartella principale. Dopo che ho provato ad aggiornare SVN, è stato aggiornato. Non so come abbia funzionato esattamente.


2

Ho avuto lo stesso problema e in qualche modo ho scoperto di avere un file .svn nascosto a livello c: \. Dopo aver eliminato questa cartella nascosta (.svn), tutto ha funzionato bene. Devo aver creato involontariamente una directory di lavoro nell'unità root.


2

Nel mio caso ho avuto gulp-watch in esecuzione che ha causato i problemi. Dopo averlo interrotto ho potuto eseguire il comando Cleanup.


Questo mi ha aiutato a uccidere una JVM indesiderata e i progressi.
Piatto

2

ciao ragazzi nei miei casi dopo aver chiuso Visual Studio e riprovare a CleanUp funziona bene


2

Ho anche bloccato con lo stesso problema che ho provato a soffiare:

1.Prova a terminare il processo relativo a svn ie TSVNCache.exe e TortoiseProc 2. Ripristinare i file non controllati e cancellarli, che ho in svn. 3.cleanup utilizzando il prompt dei comandi "svn cleanup"

e infine quando riavviato il desktop ha funzionato per me, quindi per il riavvio del sistema ha funzionato per me


1

elimina svn dalla cartella principale e sostituiscilo con un'altra copia valida che hai da elsewere.e quindi aggiorna. La cartella svn sarà normalmente una cartella nascosta. Quindi, assicurati di scoprire la cartella prima di eseguire i passaggi precedenti.


1

Soluzione alternativa che ha funzionato per me:

  1. Taglia il contenuto della tua directory e copialo in un'altra cartella.
  2. Esegui la pulizia dalla riga di comando nella cartella vuota.
  3. Copia i file nella cartella originale.

Fatto, ma non riesco a spiegare perché questo accada. Se non rimuovi i file, il comando cleanup dice che non può leggere / scrivere quei file.


1

Ho avuto lo stesso problema, cosa ha funzionato per me:

  1. Copia le tue cartelle e i tuoi file in un altro posto, per esempio in una cartella (ho cambiato i miei file di recente e l'impegno è fallito e ho portato al problema risolto)
  2. controlla una nuova copia di lavoro
  3. copia i file modificati dalla cartella alla copia di lavoro e sovrascrivi i file esistenti. Il commit / aggiornamento dovrebbe funzionare ora

1

Ho avuto un errore del tipo "Impossibile modificare i permessi del file '/Users/Code/UnitTest.cpp': nessun file o directory del genere". La sovversione è confusa su un file che non è più presente. Ho semplicemente fatto qualcosa come "echo ABCD >> /Users/Code/UnitTest.cpp" per creare una copia del file, quindi ripulire. Ha funzionato.


1

Nel mio caso, l'errore è apparso durante il tentativo di eseguire il commit all'interno di un IDE. Quando ho eseguito il commit delle stesse directory con TortoiseSVN nell'esploratore, l'operazione è riuscita.


1

Questo è successo per me quando ho usato l'esterno e uno di loro era corrotto. Ho dovuto andare in quella cartella ed eseguire una pulizia. Quindi la pulizia ha funzionato per l'intera copia di lavoro.

Esempio: utilizzando l'esterno ^/widgets/foo common/foo-widget, eseguire innanzitutto la pulizia sulla cartella common/foo-widget.


1

Ho risolto questo errore oggi quando si è verificato tentando di eseguire il commit in SVN. L'errore era autentico, TortoiseSVN non ha potuto accedere a un file che ho provato a eseguire il commit. Questo file è stato salvato durante l'esecuzione del programma "As Administrator" in Windows. Ciò significa che il file ha accesso come amministratore ma non accesso dal mio account (TortoiseSVN in esecuzione come utente interattivo). Ho preso la proprietà del file nominato nel mio account di Windows e dopo che Cleanup è stato in grado di procedere.


0

Inizialmente ho riscontrato questo problema provando a fare il check-in con TortoiseSVN. Inizialmente, entrambi, TortoiseSVN clean up e console svn cleanup hanno fallito entrambi con messaggi simili a quelli del poster originale.

Ma la mia soluzione (scoperta per caso) era solo aspettare qualche minuto. Sto pensando che TSVNCache stava trattenendo alcuni di quei file al momento del check-in.


0

seguire i passaggi seguenti.

1) Vai alla directory in cui non riesci a pulire con successo tramite svn (cartella principale o cartella secondaria).

2) Seleziona .svn cartella nella directory, taglia quella cartella e incollala nell'unità separata o nella posizione separata (fuori dalla directory svn)

3) Ora, torna alla directory: fai clic con il tasto destro e seleziona TortoiseSVN -->Repo-browser

4) Checkout la cartella (non eseguirà il checkout).

5) Tutti i tuoi articoli verranno nuovamente sottoposti a versione, e verrà riparato il problema interno di svn, e il problema dovrebbe essere risolto.


esegue SOLO il checkout completo. qualsiasi aiuto ?
candidJ

0

Nel mio caso era in esecuzione un'istanza di Java Virtual Machine in background, che uccideva la pulizia riuscita.


0

Avevo preso la cartella .svn dal mio collega sviluppatore e ho sostituito la mia cartella .svn con questa. Ha funzionato per me. Non so quali potrebbero essere altre conseguenze!


0

Utilizzando questo link, https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

Ho notato che il tutorial ha controllato le 6 migliori opzioni. Nella disperazione l'ho provato usando quelle caselle selezionate e con mia sorpresa ha funzionato. Assicurati di leggere attentamente ciò che ciascuno fa. Guardando la descrizione di ciascuno, sembravano sicuri includerli, quindi uno di quegli articoli controllati sembrava aver risolto qualsiasi problema mi trattenesse.


0

Questo può accadere quando i file sono ancora aperti quando si tenta di cambiare / pulire SVN.

Avevo una filiale in cui avevo creato un nuovo file, che avevo aperto in un'altra applicazione. Il passaggio a un altro ramo non ha potuto rimuovere il file causando il fallimento dell'opzione. Ciò stava causando anche ilsvn cleanup fallimento, tuttavia questo non viene visualizzato come motivo nell'interfaccia utente di Tortoise SVN.

L'esecuzione svn cleanupda una finestra della console (nella cartella principale) mostra chiaramente l'errorefile\location\file.ext: The process cannot access the file because it is being used by another process

La chiusura di eventuali handle / finestre di file aperti e l'esecuzione della console svn cleanupconsentono quindi il corretto funzionamento della pulizia.

Per farla breve, eseguilo svn cleanupnella console per vedere un errore più dettagliato.


0

Oltre alla risposta di Sigurd V (dovresti provare prima), alcune basi di codice più grandi hanno più cartelle '.svn', e non è necessariamente quella nella directory principale che ha il compito bloccato.

In tal caso, devi controllare ognuno. Se hai già SQLite e Powershell, puoi individuare rapidamente la directory in questione.

Per trovare quali cartelle sono bloccate, esegui (sostituendo 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" } }.

Questo fornisce un elenco di directory .svn e, sotto ognuna, un elenco di tutte le attività correnti.

Se ce ne sono con attività non finite, per ciascuna esecuzione (sostituzione path\to\sqlite.exee path\to\.svn\wc.db):

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


0

Ho riscontrato diversi problemi svn, incluso questo, risolti eliminando / creando una .svn/tmpdirectory. Quindi corrisvn cleanup


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.