wake-up-neo.net

SVN Revert Trunk, eine Revision entfernen, als ob sie nie existiert hätte?

Ist es im svn-Server möglich, eine Revision zu entfernen, als ob sie niemals existiert hätte?

Wir haben also folgende Revisionen:

1004 // Commit of some bogus code that broke the build and was just wrong
1003 // Change 1.2
1002 // Change 1.1
1001
1000 *** Initial checkin

Können wir die 1004 in svn entfernen und zu 1003 zurückkehren, als ob 1004 nie existiert hätte?

Verzeihen Sie meine Unwissenheit, ich lerne immer noch, wie man SVN benutzt.

14
Mantisimo

VCS-Systeme sind speziell darauf ausgelegt, dies so kompliziert wie möglich zu gestalten. Das möchten Sie normalerweise nicht.

Davon abgesehen, aus der offiziellen Dokumentation:

Es gibt spezielle Fälle, in denen Sie möglicherweise alle Beweise für eine Datei oder ein Commit löschen möchten. (Vielleicht hat jemand versehentlich ein vertrauliches Dokument begangen.) Dies ist nicht so einfach, weil Subversion bewusst darauf ausgelegt ist, niemals Informationen zu verlieren. Revisionen sind unveränderliche Bäume, die aufeinander aufbauen. Das Entfernen einer Revision aus dem Verlauf würde einen Dominoeffekt verursachen, der bei allen nachfolgenden Revisionen Chaos verursacht und möglicherweise alle Arbeitskopien ungültig macht.

Das Projekt sieht jedoch vor, irgendwann einen svnadmin obliterate-Befehl zu implementieren, der die Aufgabe erfüllt, Informationen dauerhaft zu löschen. (Siehe Ausgabe 516 .)

In der Zwischenzeit besteht Ihre einzige Möglichkeit darin, Ihr Repository zu svnadmin dump und dann die Dumpfile durch svndumpfilter (mit Ausnahme des fehlerhaften Pfads) in einen svnadmin load-Befehl zu leiten. Einzelheiten hierzu finden Sie in Kapitel 5 des Subversion-Buches.

http://Subversion.Apache.org/faq.html#removal

15
ty812

Diese Unfälle passieren, und es ist kein Problem, wenn SVN sie in seiner Geschichte hält. Wichtig ist, den Unfall zu beheben. Sie können die durch dieses Commit vorgenommenen Änderungen rückgängig machen. Verwenden Sie die folgenden Befehle:

svn merge -r [current_version]:[previous_version] [repository_url]
svn commit -m “Reverting previous commit and going back to revision [previous_version].”

Wenn Sie TortoiseSVN verwenden, können Sie einfach die Protokolle anzeigen, das Commit auswählen und "Änderungen aus dieser Revision wiederherstellen" im Kontextmenü auswählen. Ihre Arbeitskopie wird in die vorherige Version geändert, und Sie müssen nur noch ein Commit ausführen.

Ich denke, andere grafische Kunden haben die gleiche Option.

27
JB Nizet

Sie können den Trunk in einen anderen Zweig verschieben (Sicherung) und die korrekte Version in den Trunk kopieren

svn mv trunk https://svn_path/tags/trunk_broken
svn cp -r revNo http://svn_path/tags/trunk_broken http://svn_path/trunk

Bitte beachten Sie, dass sich die Versionsnummer erhöht und alle Änderungen in svn log angezeigt werden.

4
camelotus

Ich empfehle, die Revision zu verlassen, wenn Sie keinen echten Grund haben (z. B. Platzmangel), um sie zu entfernen. Dies ist die Hauptaufgabe des SVN-Servers, um Änderungen aufrechtzuerhalten.

0
Arafat Hegazy

Sie können einen Speicherauszug des aktuellen Repository erstellen und die falsche Revision im Speicherauszug überspringen. Sie können den Speicherauszug dann in ein neues Repository auf demselben oder einem anderen Server laden.

0
ianstigator