Wie kann ich Svn-Steuerelement wiederherstellen, wenn der .svn-Ordner beschädigt wurde?

Ich habe ein paar große Checkouts, wo der .svn-Ordner beschädigt ist, so bekomme ich und Fehler, "Cleanup konnte den folgenden Pfad nicht verarbeiten .." Und ich kann nicht mehr Dateien in diesem Verzeichnis festschreiben oder aktualisieren.

Ich würde nur löschen und die Kasse erneut ausführen, aber das ganze Verzeichnis ist über einen Gig.

Gibt es ein Tool, das die .svn-Ordner für bestimmte Ordner wiederherstellt, ohne alles herunterladen zu müssen?

Ich verstehe, dass es alle Dateien in diesem einen Ordner herunterladen muss, damit es feststellen kann, ob sie geändert wurden..aber Unterverzeichnisse mit gültigen .svn-Ordnern sollten in Ordnung sein.

Oh .. Ich bin ein großer Fan von TortoiseSVN oder der Kommandozeile für Linux.

Gedanken?

0
hinzugefügt bearbeitet
Ansichten: 3

7 Antworten

Wenn Sie wissen, welcher Ordner das beschädigte .svn-Verzeichnis enthält, können Sie nur dieses eine Verzeichnis löschen und ein svn-Update erneut ausführen. Möglicherweise müssen Sie das gesamte Verzeichnis einschließlich seines aktuellen Inhalts löschen. Wenn der Ordner mit dem beschädigten .svn-Verzeichnis ein Gigabyte ist, dann sind Sie natürlich wieder da, wo Sie angefangen haben.

0
hinzugefügt
Wenn Sie Subversion <1.5 haben, denke ich, dass dies die einzige Option sein könnte.
hinzugefügt der Autor nedned, Quelle

Ich habe dies in der Vergangenheit getroffen und keine funktionierende Lösung gefunden, außer der "nuklearen Option" (d. H. Löschen des Verzeichnisses und erneutes Auschecken).

Nicht sicher, ob dies Ihr Problem ist, aber meine Beschädigung wurde durch einen On-Access-Virenscanner auf demselben Computer wie der SVN-Server verursacht.

0
hinzugefügt
Ich habe das gerade mit Tortoise gemacht. Stellen Sie sicher, dass die Repository-URL so aktualisiert wird, dass sie mit dem Pfad Ihres Ordners übereinstimmt, da Sie dies wahrscheinlich nicht tun.
hinzugefügt der Autor Alex, Quelle

Falls Sie Änderungen an den Dateien vornehmen und diese nicht löschen können, können Sie die Subversion 1.5-Funktion verwenden, mit der Sie "mit Hindernissen auschecken" können.

Löschen Sie einfach das .svn-Verzeichnis in diesem Verzeichnis und:
(Sie müssen keine internen Verzeichnisse löschen, wenn Sie --depth-Dateien verwenden, danke Eric)

Falls das beschädigte Verzeichnis das oberste Verzeichnis der Arbeitskopie war:

svn checkout --depth files --force REPOS WC

Und wenn das Verzeichnis über dem gebrochenen noch versioniert ist:

svn update --depth files --force WC

in diesem Verzeichnis.
In beiden Beispielen ist REPOS die URL im Repository, die dem beschädigten Verzeichnis entspricht, und WC ist der Pfad zum Verzeichnis.

Dateien, die ursprünglich geändert wurden, befinden sich danach im geänderten Status.

0
hinzugefügt
Ich konnte vermeiden, den .svn-Ordner in Unterverzeichnissen zu löschen, indem ich die "--depth files" siwtch zum checkout-Befehl hinzufüge. Könnten Sie den Beitrag bearbeiten, um das zu reflektieren und vielleicht den REPOS- und WC-Text zu klären. Vielen Dank!
hinzugefügt der Autor Eric Goodwin, Quelle
thx, hat mir sehr geholfen!
hinzugefügt der Autor Martin, Quelle

Wenn die Unterverzeichnisse und OK und die Unterverzeichnisse groß sind, können Sie einen nicht-rekursiven neuen Checkout versuchen.

0
hinzugefügt

Erstellen Sie eine Sicherung des Ordners mit der fehlenden .svn

Löschen Sie dann den Ordner

Wenn es die Wurzel der Kasse ist, müssen Sie erneut auschecken

Wenn es nicht der Stamm ist, führen Sie einfach ein Update von einem Verzeichnis oben aus.

Bewegen Sie dann den Backup-Ordner darüber. (Im Idealfall nicht die .svn Ordner zurück verschieben)

Arbeiten Sie weiter und stellen Sie sicher, dass Sie aktualisieren/commit!

0
hinzugefügt

Ich bin heute auf denselben Fehler gestoßen. Es passierte, als ich versuchte, Zweige zu wechseln und eine der Dateien nicht zu löschen, die nicht im SVN-Repository sind. Danach wurde der Ordner gesperrt und ich kann keinen Befehl mehr verwenden, um es wieder funktionieren zu lassen.

Ich löschte im Grunde, was ich hatte und wiederhole die Kasse. Es ist zeitaufwendig, aber ich möchte wirklich sicherstellen, dass Svn klar ist, bevor ich wieder arbeiten kann. Vielen Dank!

0
hinzugefügt

Die ausgewählte Lösung funktionierte für mich, um den .svn-Ordner der obersten Ebene wiederherzustellen, aber die untergeordneten Objekte werden nicht erkannt. Daher scheint SVN zu diesem Zeitpunkt alles fremd zu sein, obwohl die Versionierung in Unterordnern intakt ist.

0
hinzugefügt