526 Stimmen

Wie kann ich zu einer älteren Version unseres Codes in Subversion zurückkehren?

Ich arbeite mit einem Freund an einem Projekt und möchte zu einer älteren Version unseres Codes zurückkehren und diese zur aktuellen Version machen. Wie kann ich das tun?

Ich verwende "anksvn" auf vs08.

Ich habe die gewünschte Version auf meinem PC, aber die Übertragung schlägt fehl; ich erhalte folgende Meldung "Übertragen ist fehlgeschlagen, Datei oder Verzeichnis ist veraltet."

Ich habe auch den Subversion-Client auf meinem PC.

3voto

Owl Punkte 1295

Auf dieser Seite gibt es eine Menge gefährlicher Antworten. Beachten Sie, dass seit SVN Version 1.6 ein Update -r zu Baumkonflikten führen kann, was sich schnell zu einem potentiell datenverlustreichen kafkeresken Alptraum entwickelt, in dem Sie nach Informationen über Baumkonflikte googeln müssen.

Der korrekte Weg, um zu einer Version zurückzukehren, ist:

svn merge -r HEAD:12345 .

Dabei ist 12345 die Versionsnummer. Vergessen Sie den Punkt nicht.

2voto

Yuval Adam Punkte 155168

Klicken Sie mit der rechten Maustaste auf die höchste Hierarchie, die Sie umkehren möchten >> Revert o Revert to Revision

2voto

user2554330 Punkte 30193

Die meisten der bisherigen Antworten beziehen sich auf eine umgekehrte Zusammenführung, und das ist in der Regel auch die richtige Antwort. Es gibt jedoch eine Situation (die mir gerade passiert ist), in der dies nicht der Fall ist.

Ich habe versehentlich eine Datei mit Unix-Zeilenenden in DOS-Zeilenenden geändert, als ich eine kleine Änderung vornahm, und habe sie festgeschrieben. Dies lässt sich leicht rückgängig machen, entweder durch Ändern der Zeilenenden und erneutes Committen oder durch ein Reverse Merge, aber es hat den Effekt, dass es svn blame meine Bearbeitung als Quelle für jede Zeile der Datei aufführen. (Interessanterweise ist TortoiseSVN unter Windows davon nicht betroffen; nur die Kommandozeile svn blame .)

Wenn Sie die Historie, wie sie von svn blame Ich denke, Sie müssen Folgendes tun:

  • Löschen Sie die Datei und übertragen Sie sie.
  • Kopieren Sie im Repository die vorherige gute Kopie der Datei in den Head und übertragen Sie sie.
  • Stellen Sie alle Bearbeitungen wieder her, die Sie behalten möchten.

Das Löschen ist ein wenig beängstigend, aber denken Sie daran, dass Sie die Datei immer im Repository gespeichert haben, so dass das Wiederherstellen keine große Sache ist. Zur Veranschaulichung der Schritte hier etwas Code. Nehmen wir an, dass xxx ist die Revisionsnummer der letzten guten Kopie.

svn rm svn+ssh://path/to/file
svn copy svn+ssh://path/to/file@xxx svn+ssh://path/to -m"Restore good copy"
svn update
<restore the edits>
svn commit -m"Restore edits"

Beachten Sie, dass für eine Kopie im Repository das Ziel ein Verzeichnis und kein Dateiname sein muss.

0voto

Mork0075 Punkte 5825

Synchronisieren Sie mit der älteren Version und übertragen Sie sie. Damit sollte es klappen.

Hier ist auch eine Erklärung zur Rückgängigmachung von Änderungen.

0voto

KayV Punkte 11233

Klicken Sie mit der rechten Maustaste auf das Projekt > Ersetzen durch > Revision oder URL > Wählen Sie die Revision aus, die Sie zurücksetzen möchten.

Übertragen Sie nun die lokale Version des Update-Codes an das Repository. Dadurch wird die Codebasis auf die entsprechende Revision zurückgesetzt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X