Subversion wegen "vorheriger Vorgang ist noch nicht beendet" stecken geblieben?


229

Wenn ich versuche, mein Subversion-Repo zu aktualisieren, heißt es, dass ich die Bereinigung ausführen muss. Wenn ich die Bereinigung durchführe, fehlt eine Datei. (Ich habe ein MASSIVES Verzeichnis von Dateien, die heute Morgen nicht festgeschrieben wurden, von meinem Heim-PC gelöscht, aber dann habe ich die gleichen Dateien von der Arbeit festgeschrieben, und jetzt ist mein Heim-Repo kaputt.) Aufräumen heißt also:

Bereinigung fehlgeschlagen blablabla Datei kann nicht festgelegt werden blablabla Lese- / Schreibzugriff: Das System kann die angegebene Datei nicht finden.

Wenn ich aktualisiere, heißt es:

Befehl: Aktualisierungsfehler: Der vorherige Vorgang wurde nicht abgeschlossen. Führen Sie 'cleanup' aus, wenn es unterbrochen wurde. Fehler: Führen Sie den Befehl 'Cleanup' aus. Abgeschlossen!:

Wie kann ich das loswerden?


(außer alle SVN-Informationen zu löschen und erneut
auszuchecken

3
Dieser nervige Fehler ist, warum ich SVN hasse. Jedes Mal, wenn ich damit konfrontiert werde, muss ich erneut auschecken, da die Bereinigung aus dem Stammordner oder dem übergeordneten Ordner nicht funktioniert. Aber das größte Problem ist, dass es zu diesem Zeitpunkt keine Overlay-Symbole anzeigt, so dass ich nicht weiß, welche Datei vor dem Auschecken in Backup geändert wurde
phuclv

Der Beitrag von @ sigurd-v ist die wahre Antwort auf die Frage, die mir und vielen anderen geholfen hat: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Antworten:


102

Ich war in ähnlichen Situationen. Haben Sie versucht, die Bereinigung im Stammverzeichnis Ihres Arbeitsbereichs auszuführen? Ich weiß, dass manchmal eine Bereinigung aus einem untergeordneten Verzeichnis (wo das Problem liegt) nicht funktioniert, und eine Bereinigung aus dem Stammverzeichnis des Arbeitsbereichs funktioniert nicht.

Wenn dies immer noch fehlschlägt, da Sie irgendwo ein untergeordnetes Verzeichnis gelöscht haben. Versuchen Sie, auch eine höhere Ebene aus dem untergeordneten Verzeichnis zu löschen (vorausgesetzt, dies ist nicht der Stammverzeichnis), und versuchen Sie erneut, die Aktualisierung und Bereinigung durchzuführen.

Wenn Bereinigungsversuche auf keiner Ebene erfolgreich sind, lautet die Antwort leider das Auschecken einer neuen Arbeitskopie.


4
zum Aufräumen vom Kinderverzeichnis! Für mich geht das!
Franva

1
Wenn Sie dies lesen, sind Sie in Schwierigkeiten :) Ich bin (bisher) noch nie so in ein Chaos mit Git geraten. Am Ende habe ich in jedem Verzeichnis gesäubert / zurückgesetzt / gereinigt usw., wenn Svn es mir erlauben würde.
Aliopi

2
Der Beitrag von @ sigurd-v ist die wahre Antwort auf die Frage, die mir und vielen anderen geholfen hat: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Ich habe die Bereinigung über Windows FileExplorer (mit Turtoise) ausgeführt und es gab mir einen ausführlicheren Fehler, der mir sagte, was die Datei mit dem Problem war. Irgendwie hat SVN diese Datei verloren, eine darm * .cache-Datei, also habe ich einen anderen .cache genommen und benenne es um, um die fehlende Datei zu ersetzen, führe die Bereinigung aus, diesmal keine Fehler, ALL FIXED !!
Jhollman

331

Oft ist kein neuer Checkout oder Kopieren erforderlich.

Ich habe gerade ein ähnliches Problem im Zusammenhang mit dem Fehler "Vorheriger Vorgang wurde nicht abgeschlossen" mit Hilfe dieses ( Link ) gelöst.

Es scheint, dass svn manchmal bei der Verarbeitung von Befehlen / Operationen hängen bleibt. Alle diese Vorgänge werden in der Datenbankdatei wc.db im Ordner .svn gespeichert.

Durch Herunterladen von SQLite in mein Checkout-Verzeichnis und Ausführen

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

Sie können eine Liste aller ausstehenden Vorgänge abrufen. Diese Vorgänge werden vom Fehler als "nicht abgeschlossen" bezeichnet.

Durch Laufen

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

Alle alten Vorgänge werden aus der Arbeitswarteschlange gelöscht und der Fehler verschwindet. Keine Notwendigkeit für eine neue Kasse oder irgendetwas


5
Sie sollten immer versuchen, die Bereinigung auszuführen, bevor Sie die oben genannte Lösung ausprobieren. Dies funktioniert, wenn Sie ein feststeckendes SVN-Repository zum Laufen bringen möchten, ohne eine neue Arbeitskopie auschecken zu müssen.
Sigurd V

7
Das Herunterladen von sqlite.exe und das Ausführen des Löschvorgangs war tatsächlich schneller als das Auschecken und Zusammenführen - großartige Antwort
Jeffrey Knight

12
Ich habe auch ein "gesperrt" danach bekommen, aber habe es mit einem "svn cleanup" überwunden
Jeffrey Knight

1
Ich habe dies auf Debian ausgeführt, mit apt-get install sqlite3 installiert, dann können Sie die obigen Befehle ohne die .exe ausführen
Richard Merchant

3
Ich habe auch die Nachricht 'gesperrt' erhalten, aber dann habe ich den Befehl 'Aufräumen' ausgeführt und das Kontrollkästchen "Sperren aufheben" aktiviert, und es hat funktioniert
McCoy

114

Das Ausführen der Konsole svn cleanuphat das gleiche Problem für mich gelöst.


20
Der Konsolenbefehl svn cleanupbietet außerdem detailliertere Informationen als die Verwendung des Tortoise Explorer-Plug-Ins, was ihn in solchen Situationen sehr nützlich macht.
Brandon S

7
Wenn Sie den Konsolenbefehl ausführen, erhalten Sie wahrscheinlich genügend Informationen, um das Problem tatsächlich zu lösen. Dies ist eine viel bessere Antwort.
DDS

1
svn cleanup
Nun,

Ich hatte oft Erfolg damit, übergeordnete Verzeichnisse zu durchsuchen und sie zu bereinigen, aber es ist ein bisschen zeitaufwändig und "magisch". Ich hätte nie gedacht, dass dies einen detaillierten Fehler zurückgeben würde, +1.
Phil Cooper

Stellen Sie beim Ausführen svn cleanupsicher, dass die Konsole erhöht ist. Ich habe das anfangs nicht gemacht und den red-write: Access is deniedFehler bekommen.
Tony

26

Ich hatte gerade ein ähnliches Problem. Das Ausführen von Process Explorer zeigte, dass ein anderes Programm (Notepad ++) ein Dateihandle für einen Ordner hatte, den SVN zu löschen versucht hatte. Als ich Notepad ++ schloss, konnte "Clean Up" erfolgreich ausgeführt werden.


Dies könnte zu dem in der Frage genannten Problem führen. Aber ich fürchte, es kann es nicht liquidieren, wenn es bereits passiert ist.
Gangnus

19

Ich hatte dieses Problem, nachdem ich ein Glas hinzugefügt hatte, das sich bereits im SVN befindet, und die neue Version mit demselben Namen hinzugefügt hatte.

In Eclipse habe ich das versucht

  1. Klicken Sie mit der rechten Maustaste auf Ordner> Team> Aktualisieren / Bereinigen.
  2. Bereinigen, erstellen und aktualisieren Sie meine Anwendung.
  3. Starten Sie die Eclipse neu.

Mit den obigen Schritten kann ich synchronisieren.


1
Hat für mich gearbeitet. Der dritte Schritt ist nicht obligatorisch (Eclipse neu starten).
Jpmottin

Das hat auch bei mir funktioniert, ich habe so viele Dinge ausprobiert, aber nicht funktioniert. Ich habe mein visuelles Studio geschlossen und aufgeräumt.
Vielen

18

Ich hatte die am meisten abgestimmten Antworten hier und einige andere ohne Erfolg ausprobiert. Mein WORK_QUEUETisch war leer und ich konnte nicht versuchen, in einem höheren Ordner aufzuräumen. Was tat Arbeit die folgende (dies ist über Tortoise SVN) war;

  • Klicken Sie mit der rechten Maustaste auf den Ordner
  • Gehen Sie zu TortoiseSVN -> Aufräumen ...
  • Stellen Sie sicher, dass die Option auf Break Locksaktiviert ist, und klicken Sie auf OK

Der Bereinigungsvorgang wird nun erfolgreich abgeschlossen und ich kann fortfahren. Kein Herunterladen von sqlite3 oder anderen komplizierten Lösungen erforderlich.


2
Break Locks macht nicht das, was ich dachte. Es werden nur lokale Sperren aufgehoben, die auf Ihrem System verwendet werden. Keine Sperren, die jemand anderes gesetzt hat.
Brian Carlton

1
sqlite3 löste manchmal mein Problem, aber diese Methode war zu schwer zu merken und die Bereinigung schlug so oft fehl. Diese Methode hat mich gerettet ..
sc

9

Der Versuch, die Bereinigung auszuführen, während Ihre Dateien geöffnet sind, gab mir Probleme. Sobald ich meine Anwendung (Visual Studio) geschlossen habe, habe ich aufgeräumt und es war erfolgreich


1
Wahr. Stellen Sie sicher, dass Ihre Dateien nicht als anderer Benutzer wie Administrator unter Windows verwendet oder ausgecheckt werden.
Froggythefrog

6

Ich benutze Schildkröte SVN. Wenn die Bereinigung fehlgeschlagen ist, aktivieren Sie die Bereinigungsoption

Stellen Sie sicher, dass die Option zum Sperren von Sperren aktiviert ist ist.

Bereinigungsschritt

  • linke Maustaste im Erkundungsordner
  • Wählen Sie das Menü 'Tortoise SVN' -> 'Clean up ...'
  • Aktivieren Sie das Kontrollkästchen " Sperren aufheben " und drücken Sie "OK".

Es hat bereits geantwortet, aber manchmal hilft das Bild

Geben Sie hier die Bildbeschreibung ein


4

Ich habe das gleiche Problem, in meinem Fall habe ich SVN-Schildkröte mit der Anwendung verwendet, die ich meine. Mit der Cmd-Shell von Windows im Root-Modus habe ich die SVN-Bereinigung und dann das SVN-Update angewendet. Dann können Sie in den Anwendungsmodus zurückkehren und es wird perfekt funktionieren!


2

Ich habe versucht, den .svn-Ordner an einen anderen Speicherort zu entfernen und ihn wieder im selben Stammordner abzulegen. Nachdem ich versucht habe, den SVN zu aktualisieren, wurde er aktualisiert. Ich weiß nicht, wie genau es funktioniert hat.


2

Ich hatte das gleiche Problem und stellte irgendwie fest, dass ich eine versteckte .svn-Datei auf der Ebene c: \ hatte. Nachdem ich diesen versteckten Ordner (.svn) gelöscht hatte, funktionierte alles in Ordnung. Ich muss unbeabsichtigt ein Arbeitsverzeichnis auf dem Root-Laufwerk erstellt haben.


2

In meinem Fall lief eine Schluckuhr, die die Probleme verursachte. Nach dem Stoppen konnte ich den Bereinigungsbefehl ausführen.


Dies hat mir geholfen, eine unerwünschte JVM zu töten und Fortschritte zu erzielen.
Dish

2

Hallo Leute, in meinen Fällen, nachdem ich Visual Studio geschlossen und erneut zu CleanUp versucht habe, hat es gute Zeit


2

Ich habe mich auch an das gleiche Problem gehalten, das ich versucht habe zu blasen:

1. Versuchen Sie, den mit svn verbundenen Prozess, dh TSVNCache.exe und TortoiseProc, abzubrechen. 2. Umkehren der nicht versionierten Dateien und Löschen derselben, die ich in svn habe. 3. Reinigung über die Eingabeaufforderung "svn cleanup"

und schließlich, als der Desktop neu gestartet wurde, funktionierte es für mich, also funktionierte der Neustart des Systems für mich


1

Löschen Sie den SVN aus dem Hauptordner und ersetzen Sie ihn durch eine andere brauchbare Kopie von elsewere.und aktualisieren Sie ihn anschließend. Der SVN-Ordner ist normalerweise ein versteckter Ordner. Stellen Sie daher sicher, dass Sie den Ordner einblenden, bevor Sie die obigen Schritte ausführen.


1

Problemumgehung, die bei mir funktioniert hat:

  1. Schneiden Sie den Inhalt Ihres Verzeichnisses aus und kopieren Sie ihn in einen anderen Ordner.
  2. Führen Sie die Bereinigung über die Befehlszeile im leeren Ordner aus.
  3. Kopieren Sie die Dateien zurück in den ursprünglichen Ordner.

Fertig, aber ich kann nicht erklären, warum dies passiert. Wenn Sie die Dateien nicht entfernen, gibt der Bereinigungsbefehl an, dass er diese Dateien nicht lesen / schreiben kann.


1

Ich hatte das gleiche Problem, was für mich funktionierte:

  1. Kopieren Sie Ihre Ordner und Dateien an einen anderen Ort, z. B. in einen Ordner (ich habe meine Dateien kürzlich geändert und die Verpflichtung ist fehlgeschlagen und hat zu dem behobenen Problem geführt).
  2. Schauen Sie sich eine neue Arbeitskopie an
  3. Kopieren Sie Ihre geänderten Dateien aus dem Ordner in Ihre Arbeitskopie und überschreiben Sie vorhandene Dateien. Das Festschreiben / Aktualisieren sollte jetzt funktionieren

1

Ich hatte einen Fehler wie "Die Dauerwelle der Datei '/Users/Code/UnitTest.cpp' kann nicht geändert werden: Keine solche Datei oder kein solches Verzeichnis". Die Subversion ist verwirrt über eine Datei, die nicht mehr vorhanden ist. Ich habe einfach so etwas wie "echo ABCD >> /Users/Code/UnitTest.cpp" gemacht, um eine Kopie der Datei zu erstellen und dann zu bereinigen. Es funktionierte.


1

In meinem Fall trat der Fehler auf, wenn versucht wurde, innerhalb einer IDE ein Commit durchzuführen. Als ich das Commit derselben Verzeichnisse mit TortoiseSVN im Explorer ausführte, war die Operation erfolgreich.


1

Das ist mir bei der Verwendung von externen Geräten passiert und eines davon war korrupt. Ich musste in diesen Ordner gehen und eine Bereinigung durchführen. Dann funktionierte die Bereinigung für die gesamte Arbeitskopie.

Beispiel: Führen Sie mit external ^/widgets/foo common/foo-widgetzuerst eine Bereinigung des Ordners durch common/foo-widget.


1

Ich habe diesen Fehler heute behoben, als beim Versuch, einen Commit für SVN durchzuführen, ein Fehler auftrat. Der Fehler war echt, TortoiseSVN konnte nicht auf eine Datei zugreifen, die ich festschreiben wollte. Diese Datei wurde gespeichert, während ein Programm "Als Administrator" in Windows ausgeführt wurde. Dies bedeutet, dass die Datei über Administratorzugriff verfügt, jedoch nicht über mein Konto (TortoiseSVN wird als interaktiver Benutzer ausgeführt). Ich habe die nominierte Datei unter meinem Windows-Konto in Besitz genommen und konnte danach mit der Bereinigung fortfahren.


0

Ich hatte anfangs dieses Problem beim Versuch, mich bei TortoiseSVN anzumelden. Anfänglich schlugen sowohl die TortoiseSVN-Bereinigung als auch die Konsolen-SVN-Bereinigung mit ähnlichen Meldungen wie das Originalposter fehl.

Aber meine Lösung (aus Versehen herausgefunden) bestand darin, nur ein paar Minuten zu warten. Ich denke, TSVNCache hat einige dieser Dateien zum Zeitpunkt des Eincheckens festgehalten.


0

Befolgen Sie die folgenden Schritte.

1) Wechseln Sie in das Verzeichnis, über das Sie nicht erfolgreich bereinigen können svn (Stammordner oder untergeordneter Ordner).

2) Wählen Sie .svn Ordner im Verzeichnis aus, schneiden Sie diesen Ordner aus und fügen Sie ihn in das separate Laufwerk oder den separaten Speicherort (außerhalb des SVN-Verzeichnisses) ein.

3) Gehen Sie nun zurück zum Verzeichnis - klicken Sie mit der rechten Maustaste und wählen Sie TortoiseSVN -->Repo-browser

4) Checkout den Ordner (es wird kein neuer Checkout durchgeführt).

5) Alle Ihre Artikel werden erneut versioniert und das interne Problem von svn wird behoben. Das Problem sollte behoben sein.


Führen Sie NUR eine vollständige Kaufabwicklung durch. irgendeine Hilfe ?
CandidJ

0

In meinem Fall wurde eine Java Virtual Machine-Hintergrundinstanz ausgeführt, die die erfolgreiche Bereinigung beendet hat.


0

Ich hatte meinem Entwicklerkollegen den .svn-Ordner abgenommen und meinen .svn-Ordner durch diesen ersetzt. Es hat bei mir funktioniert. Ich weiß nicht, was andere Konsequenzen haben können!


0

Über diesen Link https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

Ich habe festgestellt, dass im Tutorial die Top-6-Optionen überprüft wurden. In meiner Verzweiflung versuchte ich es mit diesen Kontrollkästchen, und zu meiner Überraschung funktionierte es. Lesen Sie sorgfältig durch, was jeder tut. Wenn man sich die Beschreibung der einzelnen Elemente ansah, schien es sicher, sie für mich aufzunehmen, sodass eines dieser überprüften Elemente das Problem behoben zu haben schien, das mich aufhielt.


0

Dies kann passieren, wenn noch Dateien geöffnet sind, wenn Sie versuchen, SVN zu wechseln / zu bereinigen.

Ich hatte einen Zweig, in dem ich eine neue Datei erstellt hatte, die ich in einer anderen Anwendung geöffnet hatte. Durch das Wechseln zu einem anderen Zweig konnte die Datei nicht entfernt werden, wodurch der Wechsel fehlschlug. Dies verursachte auch diesvn cleanup zum Fehlschlagen, wird jedoch nicht als Grund in der Schildkröten-SVN-Benutzeroberfläche angezeigt.

Das Ausführen svn cleanupaus einem Konsolenfenster (im Stammordner) zeigt den Fehler deutlich anfile\location\file.ext: The process cannot access the file because it is being used by another process

Wenn Sie alle geöffneten Dateihandles / Fenster schließen und die Konsole svn cleanupausführen, funktioniert die Bereinigung ordnungsgemäß.

Lange Rede, kurzer Sinn - laufen Sie svn cleanupin der Konsole, um einen detaillierteren Fehler zu sehen.


0

Neben der Antwort von Sigurd V (das sollten Sie zuerst versuchen) haben einige größere Codebasen mehrere ".svn" -Ordner, und es ist nicht unbedingt der im Stammverzeichnis, der die gesperrte Aufgabe hat.

Wenn dies der Fall ist, müssen Sie jeden einzelnen überprüfen. Wenn Sie bereits SQLite und Powershell haben, können Sie das fehlerhafte Verzeichnis schnell finden.

So finden Sie heraus, welche Ordner gesperrt sind: Ausführen (Ersetzen 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" } }.

Dies gibt eine Liste der .svn-Verzeichnisse und unter jedem eine Liste aller aktuellen Aufgaben.

Wenn es Aufgaben mit noch nicht abgeschlossenen Aufgaben gibt, für jeden einzelnen Lauf (Ersetzen path\to\sqlite.exeund path\to\.svn\wc.db):

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


0

Ich habe mehrere Probleme mit gesehen svn, einschließlich dieses, die durch Löschen / Erstellen eines .svn/tmpVerzeichnisses gelöst wurden . Dann rennesvn cleanup


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.