2008-09-18 8 views
24

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

Ich würde nur löschen und die Kasse wieder tun, aber das gesamte Verzeichnis ist über einen Auftritt.

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 Befehlszeile für Linux.

Gedanken?

Antwort

20

Falls Sie Änderungen an den Dateien haben 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 Verzeichnis .svn in diesem Verzeichnis und:
(Sie müssen in Verzeichnissen nicht löschen, wenn --depth Dateien verwenden, dank Eric)

Falls das gebrochene Verzeichnis der Top-Verzeichnis war die Arbeitskopie:

svn checkout --depth files --force REPOS WC 

Und wenn das Verzeichnis über dem zerbrochenen noch versioniert Lauf:

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 Zustand.

+0

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! –

+0

thx, hat sehr geholfen! – Mobbit

2

Ich habe dies in der Vergangenheit getroffen und keine funktionierende Lösung außer der "nuklearen Option" gefunden (d. H. Das Verzeichnis löschen und erneut auschecken).

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

+0

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. – Alex

5

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

Wenn Sie Subversion <1.5 haben, denke ich, dass dies die einzige Option sein könnte. – nedned

1

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

3

ein Backup des Ordners machen, dass die fehlenden .svn

Dann löschen Sie den Ordner hat

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

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

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

Weiter arbeiten und sicher sein, zu aktualisieren/zu verpflichten!

0

Ich habe heute den gleichen Fehler gefunden. 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 wiederholen die Kasse. Es ist zeitaufwendig, aber ich möchte wirklich sicherstellen, dass Svn klar ist, bevor ich wieder arbeiten kann. Vielen Dank!

1

Die ausgewählte Lösung funktionierte für mich, um den .svn-Ordner auf oberster 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.

Verwandte Themen