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.

0voto

Jonathan Komar Punkte 2312

Die Antwort von Jon Skeet ist so ziemlich die Lösung in Kurzform, aber wenn Sie wie ich sind, möchten Sie vielleicht eine Erklärung. Das Subversion-Handbuch nennt dies einen

Cherry-Pick-Zusammenführung

Aus den Man Pages.

  1. Diese Form wird als "Cherry-Pick"-Zusammenführung bezeichnet: '-r N:M' bezieht sich auf den Unterschied in der Geschichte des Quellzweigs zwischen den Revisionen N und M.

    Ein "Rückwärtsbereich" kann verwendet werden, um Änderungen rückgängig zu machen. Zum Beispiel, wenn Quelle und Ziel auf denselben Zweig verweisen, kann eine zuvor vorgenommene Revision 'rückgängig' gemacht werden. In einem umgekehrter Bereich N ist größer als M in '-r N:M', oder die Option '-c' wird mit einer negativen Zahl verwendet: '-c -M' ist äquivalent zu '-r M:'. Das Rückgängigmachen solcher Änderungen wird auch als als 'umgekehrtes Zusammenführen' bezeichnet.


  • Wenn die Quelle eine Datei ist, werden die Unterschiede auf diese Datei angewendet. Datei angewandt (nützlich für das Reverse-Merging früherer Änderungen). Andernfalls, wenn die Quelle ein Verzeichnis ist, dann ist das Ziel standardmäßig '.'.

    Bei normalem Gebrauch sollte die Arbeitskopie auf dem neuesten Stand sein, mit einer einzigen Revision, ohne lokale Änderungen und ohne vertauschte Teilbäume.

Beispiel:

svn merge -r 2983:289 path/to/file

Dies ersetzt die lokale Kopie[2983] (die laut obigem Zitat mit dem Server synchronisiert sein sollte - Ihre Verantwortung) mit der Revision 289 vom Server. Die Änderung erfolgt lokal, was bedeutet, dass Sie die Änderungen vor dem Übertragen überprüfen können, wenn Sie einen sauberen Checkout haben.

-1voto

shah1988 Punkte 2536

Bei mir hat sich folgendes bewährt.

Ich hatte eine Menge lokaler Änderungen und musste diese in der lokalen Kopie verwerfen und die letzte stabile Version im SVN auschecken.

  1. Überprüfen Sie den Status aller Dateien, einschließlich der ignorierten Dateien.

  2. Greifen Sie alle Zeilen auf, um die neu hinzugefügten und ignorierten Dateien zu erhalten.

  3. Ersetzen Sie diese durch // .

  4. et rm -rf alle Zeilen.

    svn status --no-ignore | grep '^[?I]' |  sed "s/^[?I] //" | xargs -I{} rm -rf "{}"

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