2010-02-21 16 views
6

Durch Zufall habe ich "svn import ..." im falschen Verzeichnis aufgerufen. Gibt es eine vernünftige Möglichkeit, diesen Fehler rückgängig zu machen?Ist es möglich, einen Import in Subversion rückgängig zu machen?

Googeln Ich habe keine nützliche Antwort gefunden, und das Problem, das ich am stackoverflow am nächsten fand, war importing the correct data to the wrong place, während ich die falschen Daten an den richtigen Ort importierte.

Und: das Repository ist nicht neu, so dass das Löschen nicht in Frage kommt.

Es wäre eine Art Ironie, wenn ich Operationen in einem Versionskontrollsystem nicht rückgängig machen könnte. Kann mir also jemand helfen? (Danke!)

EDIT: Ich habe mein Repository in einer Berkley-Datenbank gespeichert, d. H. Es ist im Dateisystem. Betrachtet man das Änderungsdatum aller Dateien/Verzeichnisse und den Inhalt der soeben geänderten Dateien, konnte ich herausfinden, was zu tun ist, außer einer Sache: Weiß jemand, wofür die Datei txn-current ist? Ich nehme an, es ist mit der Transaktionsverarbeitung verbunden, aber was bedeutet sein Inhalt (Länge ist 2 Bytes)?

EDIT 2: Vielen Dank für beide hilfreiche Antworten. Ich akzeptierte Martins Antwort, da es den richtigen Weg dafür bieten sollte (da ich unter Zeitdruck bin, habe ich nur einige Dateien gelöscht, wie in meinem ersten EDIT angedeutet, ignoriere den Inhalt von txn-current und lebe bis jetzt gut). Aber sieh dir den Link an, den Wim in seinem Kommentar gegeben hat!

Antwort

10

Wenn es keine weiteren Commits waren, da Sie Ihre Dateien importiert, Sie dann Die letzte Revision kann einfach mit svn dump

gelöscht werden

Das folgende Beispiel aus this page genommen:

  • (unter der Annahme, Revisionen 1-125 OK sind, 126 ist die letzte Revision, die das Problem verursacht)
  • eine Sicherung des Repository machen, dann die Repository-Dump (mit Ausnahme der letzten Revision):
    • > svnadmin dump -r1:125 myrepo > my.dump
  • jetzt ein neues Repository erstellen und die Sicherung laden:
    • > svnadmin create myrepo
    • > svnadmin load myrepo < my.dump
11

Sie können eine direkt nicht mehr rückgängig machen begehen, ist die einzige Option für diese eine svnadmin dump zu tun, von dem dumpfile die commit entfernen (entweder von Hand mit einem Texteditor oder svndumpfilter verwenden und svnadmin load es wieder.

Wenn es kein wirkliches Problem ist, dass die Daten irgendwo im Repository als eine ältere Revision bleibt, können Sie svn delete es einfach und begehen stattdessen etwas anderes.

+0

Danke, aber es gab im falschen Verzeichnis einige Binärdateien und ich möchte sie loswerden. Wie kann ich die Daten mithilfe von Dump entfernen? –

+2

Eine ältere Version des SVN-Buchs enthält weitere Informationen zur Verwendung von svndumpfilter: http://svnbook.red-bean.com/en/1.2/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svndumpfilter – Wim

+0

Sehr nützlicher Link, nochmals vielen Dank! Ich bin im Moment auf einem anderen Weg (siehe die nächste Bearbeitung meiner Frage), aber wenn es nicht funktioniert, werde ich Svndumpfilter versuchen. –

Verwandte Themen