Arbeitskopie gesperrt


70

Ich entwickle ein Web mit Subversion als Versionskontrolle, habe aber die Fehlermeldung "Arbeitsverzeichnis gesperrt" erhalten

Hier ist die Geschichte:

ich habe

PC-A:

  • Windows XP Pro
  • VisualSVN 2.5.2
  • Schildkröte SVN 1.7.3

PC-B:

  • Windows XP Home
  • Schildkröte SVN 1.7.3

Ich habe ein Repository auf PC-A mit VisualSVN erstellt.

Von PC-B aus checke ich http: \\ PC-A: 81 \ svn \ test \ trunk nach D: \ xampp \ htdocs \ test-lalala.

Von PC-A aus checke ich auch http: \\ PC-A: 81 \ svn \ test \ trunk nach D: \ xampp \ htdocs \ test-lalala.

Ich erstelle einen Post-Commit-Hook, in dem die Datei my-post-commit.bat ausgeführt wird. Wenn ich mich also auf http: \\ PC-A: 81 \ svn \ test \ trunk, Ordner D: \ xampp \ htdocs \ test-lalalaon PC- Ein Testament wird aktualisiert, damit andere Personen das Ergebnis sehen können.

"C:\Program Files\VisualSVN Server\bin\svn.exe" update "D:\xampp\htdocs\test-lalala" --username myusername --password mypassword --config-dir "C:\Program Files\VisualSVN Server\conf" 

Erstellen Sie auf PC-B die Datei index.php und legen Sie fest. Beim Festschreiben wird diese Fehlermeldung angezeigt

Fehlermeldung

Auf PC-A versuche ich, mit der rechten Maustaste auf D: \ xampp \ htdocs \ test-lalala TortoiseSVN> CleanUp zu klicken und "Status der Arbeitskopie bereinigen" und "Externe einschließen" zu aktivieren (standardmäßig aktiviert). Versuchen Sie, eine Datei hinzuzufügen und festzuschreiben, aber es wird immer noch dieselbe Fehlermeldung angezeigt.

Ich versuche, im .svn-Ordner nach einer Sperrdatei zu suchen, aber es gibt keine Sperrdatei. Ich versuche auch, die Arbeitskopie auf PC-A D: \ xampp \ htdocs \ test-lalala zu löschen und erneut auszuchecken, aber beim Festschreiben wird immer noch dieselbe Fehlermeldung angezeigt.

Wie löse ich diese Fehlermeldung? Wenn ich mich festschreibe, wird der Ordner automatisch aktualisiert?


Jonathon J Howeys Antwort hat bei mir funktioniert. Ich musste noch etwas tun, nämlich mein visuelles Studio schließen, bevor ich aufräumte.
Saquib Adil

Antworten:


195

Jedes Mal, wenn ich einen Fehler beim Sperren der Arbeitskopie erhalte, führe ich eine "Bereinigung" aus. Danach ist alles wieder normal.

In der Kommandozeile können Sie ausführen svn cleanup wodurch auch Sperrdateien entfernt werden.

Hinweis: Führen Sie diesen Vorgang in einem Verzeichnis auf einer Ebene aus, das in den meisten Fällen behoben werden sollte.


18
arbeitete für mich, als ich eine Verzeichnisebene von einem gesperrten Ort
aufräumte

Es funktioniert unter Ubuntu, ich habe Ubuntu auf dem Client und Linux auf dem Server und es funktioniert. Tatsächlich passiert mir dieses Problem unter Linux häufiger als unter Windows.
Jewgenij Afanasjew

5
Vergessen Sie nicht, das Kontrollkästchen "Sperren aufheben" zu aktivieren, wenn Sie die GUI verwenden.
Manish Dubey

36

Für alle, die dieses Problem noch haben (Fehler: Arbeitskopie '{DIR}' gesperrt.), Habe ich Ihre Lösung:

Ich habe festgestellt, dass beim Absturz eines TortoiseSVN-Fensters eine TSVNCache.exe verbleibt, die noch einige Handles für Ihre Arbeitskopie enthält und die Sperrprobleme verursacht, die angezeigt werden (und außerdem verhindert, dass Clean Up seinen Job ausführt).

Um dies zu beheben:

Entweder

1a) Verwenden Sie Process Explorer oder ähnliches, um die Handles von TSVNCache.exe zu löschen

1b) .. Oder noch einfacher, verwenden Sie einfach den Task-Manager, um TSVNCache.exe zu beenden

Dann

2) Klicken Sie mit der rechten Maustaste -> TortoiseSVN -> Aufräumen. Es muss nur "Status der Arbeitskopie bereinigen" aktiviert werden.

Von dort aus viel Spaß beim Aktualisieren / Festschreiben. Sie können das Sperrverhalten reproduzieren, indem Sie das SVN-Update durchführen und dann den TortoiseProc.exe-Prozess schnell beenden, bevor das Update abgeschlossen ist.


Nur das Aufräumen hat für mich funktioniert, aber dies geschah nach dem Abmelden und erneuten Anmelden, sodass der Prozess möglicherweise auf diese Weise abgebrochen wurde.
RedEyedMonster

Ich hatte Visual Studio mit AnkhSVN ausgeführt und musste dies auch schließen, bevor die Bereinigung funktionieren würde.
Xenoclast

2
Nach langem Suchen habe ich das endlich gefunden. Dies sollte sichtbarer sein, da es das einzige ist, was für mich funktioniert hat!
JohanLejdung

22

Führen Sie eine "Bereinigung" auf der obersten Verzeichnisebene durch.


2
Der Fehler "Arbeitsverzeichnis gesperrt" kann auftreten, weil zum Zeitpunkt des Hinzufügens des Ordners / der Datei eine Sperre durch den SVN-Client vorliegt und diese nicht ordnungsgemäß festgeschrieben wurden. Dies kann durch Bereinigung behoben werden.
Prinz

1
Ich habe den gleichen Fehler erhalten, als ich keine Bereinigung im <b> obersten Verzeichnis </ b> ausgeführt habe
Vincent

4
+1 für "auf der obersten Verzeichnisebene" . Niemand sonst erwähnt es und es scheint wichtig zu sein.
Melebius

11

Ich habe es gelöst, indem ich den WC_Lock-Datensatz im SQLite-Dateisperrdatensatz ".svn \ wc.db" in der WC_LOCK-Tabelle gelöscht habe.

Öffnen Sie einfach die Datei "wc.db" mit dem SQLite-Editor und führen Sie sie aus

aus WC_LOCK löschen

Die Lösung wurde in einem anderen Link angegeben, den ich derzeit nicht finden kann. Aber wirklich eine ziemliche Lösung; ohne sich Gedanken über das Löschen aller Verzeichnisse machen zu müssen


Ist DB Browser für SQL Lite derselbe wie der SQLLite-Editor?
Mostowski Zusammenbruch

Ja, das sollte es sein. Für mich benutze ich normalerweise nur die Firefox-Erweiterung, um DB
sgupta

7

Ich habe es behoben, indem ich den versteckten .svnOrdner gelöscht und durch die neue Kasse ersetzt habe, .svnund es hat funktioniert. Wahrscheinlich wurde dieser versteckte Ordner durcheinander gebracht!


5

Ich bin sicher, es funktioniert gut für Sie

Gehe zum SVN-Ordner der obersten Ebene.

Klicken Sie mit der rechten Maustaste auf den Ordner (der Ihre SVN-Dateien enthält) -> TortoiseSVN -> CleanUp

Dies wird sicherlich Ihr Problem lösen.


3

Wenn Sie ein Windows-Typ sind und den Benutzer "Tortoise SVN" verwenden.

Wählen Sie die Datei aus. Rechtsklick. Option 'Tortoise SVN' -> Sperre erhalten. Verwenden Sie die Option 'Das Schloss stehlen'.


3

Sie können es mit nur einem Schritt beheben.

Schritt 1: Öffnen Sie das Terminal und gehen Sie zu Ihrem Projekt. Feuern Sie dann den Befehl "svn cleanup" und dann "svn update" ab.


das sind zwei Schritte, P ... oder sogar drei
D

1

Am Ende habe ich den Exportbefehl anstelle des Aktualisierungsbefehls verwendet. Dies ist der Post-Commit-Hook

"C: \ Programme \ VisualSVN Server \ bin \ svn.exe" exportiere "D: \ xampp \ htdocs \ test-lalala" - ruhig - nicht interaktiv - erzwinge - Benutzername mein Benutzername - Passwort mein Passwort


1

Fehler "Arbeitskopie gesperrt", folgen Sie einfach den Schritten:

  1. In welchem ​​Verzeichnis wird beim Update eine Fehlermeldung angezeigt
  2. Wechseln Sie in das übergeordnete Verzeichnis
  3. Gehen Sie im übergeordneten Verzeichnis zum versteckten Verzeichnis ".svn"
  4. Datei mit dem Namen "lock" entfernen
  5. Aufräumen und fertig

Sie können den SVN ohne Fehler ordnungsgemäß aktualisieren


1

Tortoise svn -> aufräumen

Das ist alles in SVN


2
Was oft fehlschlägt oder auf unbestimmte Zeit aufräumt
Asu

Was ist, wenn ein Benutzer mit dem Problem konfrontiert ist und TortoiseSVN doch nicht verwendet?
Nico Haase

1

Wenn Sie einen Kopierfehler erhalten, führen Sie einfach svn cleanupdas aus, um alle unerwünschten Dateien und Ordner zu bereinigen. Wenn immer noch ein Fehler auftritt, machen Sie eine Sache.

Kopieren Sie Ihre Dateien auf ein anderes Laufwerk, löschen Sie den Ordner oder die Datei der Arbeitskopie und führen Sie dann ein Update durch. Dadurch wird die neue Datei abgerufen und anschließend durch Ihre aktualisierte Kopie ersetzt und diese festgeschrieben.


0

Ich habe die gleichen Probleme erlebt, die Sie beschrieben haben. Es scheint ein Fehler in Tortoise 1.7.3 zu sein. Ich bin auf 1.7.2 zurückgekehrt, habe eine Bereinigung und ein Update durchgeführt. Jetzt funktioniert meine SVN / Schildkröte wieder einwandfrei



0

Läuft Ihre BitLocker-Festplattenverschlüsselung? In meinem Fall wurde das gesamte Laufwerk der Festplatte für die Verschlüsselung gesperrt, und SVN ist mit diesem Fehler fehlgeschlagen.


-1
svn cleanup test-lalala/
svn update

zweimal wiederholen


Können Sie das weiter erklären? Wofür steht test-lalala?
Nico Haase

@NicoHaase Das ist der gleiche Name, der in der Frage verwendet wird
Mark Rotteveel

Und was meinst du mit "zweimal wiederholen"?
Nico Haase
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.