it-swarm.com.de

SVN: Wie kann ich zur vorherigen Revision zurückkehren?

In einem Projekt, an dem ich arbeite, wurde eine Reihe von Fehlern gemacht. Wie kann ich auf eine bekannte funktionierende Version zurückgreifen und darauf aufbauen? Angenommen, ich bin in Revision 15, aber ich möchte zur Revision 10 zurückkehren - und ab 10 weiterarbeiten. Ich benutze Zend Studio.

Kann ich in SVN vorhandene Revisionen löschen?

30

Von der Kommandozeile aus:

svn up -r [revision_number]

Wobei [Revisionsnummer] die Revision ist, zu der Sie zurückkehren möchten.

Und nein, Sie können keine Revisionen löschen, die bereits in SVN vorhanden sind.

48
ashicus

Sie können einfach eine Aktualisierung der Revision mithilfe von durchführen

svn up -r 10

Aber wie Christoph vorgeschlagen hat, wird dies Sie dürfen die Änderungen nicht übernehmen da SVN Sie benötigt, um Ihre Arbeitskopie auf HEAD zu aktualisieren, bevor Sie eine Übernahme durchführen können. Was Sie stattdessen tun können, ist

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"
9
Aniket Thakur

Drei Möglichkeiten:

Zusammenführen umkehren: (am schnellsten, behält schlechte Überarbeitungen bei, fügt neue Überarbeitung hinzu)

svn merge $(REPO)@$(GOODREV) $(WC)

SVN-Dump: (entfernt fehlerhafte Revisionen vollständig)

svnadmin dump $(REPO) -r 1:$(GOODREV) > dumpfile
svnadmin load $(NEWREPO) < dumpfile
# Now delete $(REPO), and use $(NEWREPO)

Handbearbeitung: (entfernt fehlerhafte Revisionen, unsicher, letzter Ausweg)

Der einzige Grund, warum Sie dies benötigen, ist, dass Sie aus irgendeinem Grund auf Dateiebene Zugriff auf das Repository haben, jedoch keinen Shell-Zugriff. Beachten Sie, dass dies nur auf SVN 1.6 und 1.7 getestet wurde.

  1. Aktualisieren Sie Ihre Arbeitskopie auf $(GOODREV) (Wenn Sie HEAD belassen, kann sie nach Abschluss des Vorgangs nicht mehr verwendet werden.)
  2. Ergreifen Sie alle erforderlichen Maßnahmen, um das Repo vor dem Zugriff von außen zu schützen. Wenn es an einen Webserver angeschlossen ist, trennen Sie es jetzt. Zugriffe Dritter auf das Repo während dieses Vorgangs können es beschädigen.
  3. Sichern Sie Ihr Repo. (Tut nie weh, nur für den Fall, dass etwas schief geht.)
  4. Ändern Sie die Nummer in db/current in $(GOODREV). Vergewissern Sie sich, dass Sie das Zeilenende LF nicht ändern.
  5. Löschen Sie alle nummerierten Dateien (nicht Ordner) in db/revs/*/* und db/revprops/*/*, die> $(GOODREV) sind.
  6. db/rep-cache.db löschen
  7. Aktualisieren Sie Ihre Arbeitskopie auf HEAD, das jetzt $(GOODREV) entsprechen sollte.

Beachten Sie, dass Sie bei Verwendung von TortoiseSVN auch die folgenden Schritte ausführen müssen:

  1. Löschen Sie alle Dateien in %APPDATA%\TortoiseSVN\logcache\*
  2. Töte alle Instanzen TSVNCache.exe über den Task-Manager. (Normalerweise gibt es einen, aber könnte unter WinVista + aufgrund der UAC-Sicherheit 2 sein, wodurch verhindert wird, dass Anwendungen mit erhöhten Rechten mit einem nicht erhöhten TSVNCache.exe interagieren. Beim ersten Öffnen Ein Save As... -Dialog aus einer erhöhten Anwendung, ein erhöhter TSVNCache.exe wird erzeugt.)

Dies behebt die seltsame Protokollanzeige, die dadurch verursacht wird, dass der Cache von TortoiseSVN in Konflikt mit dem neuen Repo-Status steht.

9
Unsigned

Laden Sie die Dokumente von der TortoiseSVN-Niederlassung ab.

  1. Verwenden Sie den Revisionsprotokolldialog
  2. Verwenden Sie den Zusammenführungsdialog

Ich benutze Methode 2 und arbeite gut auf meiner Seite.

https://tortoisesvn.net/docs/nightly/TortoiseSVN_de/tsvn-howto-rollback.html

0
chendu