Frage

Lassen Sie uns sagen, die ich begangen habe einige schlechte änderungen Subversion-repository.Dann begehe ich gute änderungen, die ich behalten will.

Was wäre die einfachste Möglichkeit zum Rollback von negativen Veränderungen in der Finsternis, und halten die gute verpasst?Unter der Annahme, dass Dateien in Bezug auf schlechte Veränderungen sind nicht dieselben wie jene in Bezug auf die guten Veränderungen.Wie sich die Dinge ändern, wenn änderungen vorgenommen wurden, um dieselben Dateien wie schlechte Veränderungen?

Ich bin hauptsächlich auf der Suche einen Weg, dies zu tun über Eclipse-plugins (Subclipse oder Subversive), aber Kommandozeilen-Befehle sind auch interessant.

War es hilfreich?

Lösung

Sie haben zwei Möglichkeiten, dies zu tun.

Die Schnelle und Schmutzige auswählen, Ihre Dateien (mit Strg) im Projekt-Explorer-Ansicht mit der rechten Maustaste, wählen Sie" Replace with... und dann Sie wählen die beste option für Sie, die von Latest from Repository, oder einige Branch version.Nachdem Sie die Dateien, die Sie ändern (mit einem Leerzeichen, oder etwas zu beheben, Ihren Anruf und verpflichten Sie zu erstellen Sie eine neuere revision.

Eine weitere saubere Weg ist die Wahl Merge im team-Menü und navigieren Sie durch den Assistenten, der Ihnen helfen wird, um die Wiederherstellung der alten version in die aktuelle überarbeitung.

Beide Befehle haben Ihre Befehlszeilen-äquivalente: svn revert und svn merge.

Andere Tipps

In Eclipse Ganymede (Subclipse)

Wählen Sie Projekt/die Datei, die enthält fehlerhafte änderung sichtbar, und aus der pop-up-Menü wählen Sie:

Team -> Show History

Revisionen Bezug auf das Projekt/die Datei wird gezeigt werden in der Registerkarte "Verlauf".

Finden, revision, wo die "bad änderungen" begangen wurden und von pop-up-Menü wählen Sie:

Revert der Änderungen von Revision X

Dies wird änderungen in Datei(en) geändert innerhalb von bad revision, mit der revision vor schlechten überarbeitung.

Es gibt zwei Szenarien, von hier:

  1. Wenn Sie verpflichtet sich keine änderungen für die Datei (schlechte Version der letzten überarbeitung, die für diese Datei), es wird entfernen Sie einfach die änderungen in bad überarbeitung.Diese änderungen werden zusammengeführt, um Ihre Arbeitskopie, so dass Sie Sie übergeben.

  2. Wenn Sie begangen, einige änderungen für die Datei (bad revision wird nicht die Letzte revision, die für diese Datei), müssen Sie manuell Konflikte zu lösen.Lassen Sie uns sagen, dass du die Datei readme.txt mit, und schlechte Revisionsnummer ist 33.Auch Sie haben einen weiteren commit für diese Datei in revision 34.Nach Sie wählen Revert der Änderungen von Revision 33 Sie haben folgende in Ihre Arbeitskopie:

die readme-Datei.txt.merge-Links.r33 - bad-revision

die readme-Datei.txt.merge-right.r32 - bevor schlechte revision

die readme-Datei.txt.arbeiten - Arbeitskopie (die gleiche wie in den r34, wenn Sie über keine nicht festgeschriebenen änderungen)

Original readme.txt markiert Konflikt, und enthält zusammengeführte version (bei änderungen von bad revision entfernt werden) mit einigen Markierungen (<<<<<<< .arbeiten etc).Wenn Sie nur wollen, um änderungen zu löschen, die von bad revision und halten die änderungen nach, dass, dann alle Sie haben zu tun ist entfernen Marker.Andernfalls können Sie Inhalte kopieren von einer der 3 oben genannten Dateien zur ursprünglichen Datei.Was auch immer Sie wählen, wenn Sie fertig sind, markieren Sie den Konflikt gelöst, indem

Team - Gelöst Markieren

Temporäre Dateien werden entfernt, und die Datei wird markiert geändert.Wie in 1, die Sie haben, um die änderungen zu übernehmen.

Beachten Sie, dass diese nicht entfernen revision, die revisions-Historie im svn-repository.Sie machte einfach neue revision, wo änderungen von bad revision entfernt werden.

Wenn Sie wollen, um 1 Datei zu einem Zeitpunkt, und gehen Sie zur Ansicht "Verlauf" für den Datei-vorausgesetzt, Sie haben ein Eclipse SVN plugin installiert."Team->Show In Der Geschichte"

In der History-Ansicht, finden die Letzte gute version der Datei mit der rechten Maustaste und wählen Sie "Get-Inhalt".Das ersetzen der aktuellen version mit dieser version ist der Inhalt.Sie können dann änderungen Sie die, wenn Sie behoben haben es alle.

In Eclipse mit Subversiven:

Rechtsklick auf Ihr Projekt - > Team - > Merge

In der merge-Fenster, wählen Sie die Revisionen, die Sie wiederherstellen möchten, wie normalerweise, sondern ermöglichen auch die Kontrollkästchen "Storniert Zusammenführen".

Verschmelzen als normal.

Ich habe geschrieben ein paar blog-posts zu diesem Thema.Eine, die Subclipse centric: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html und ein Befehlszeilen-centric: http://blogs.collab.net/subversion/2007/07/second-chances/

Das svnbook hat einen Abschnitt über, wie Subversion erlaubt Ihnen, die änderungen rückgängig machen, die von einer bestimmten revision ohne Auswirkungen auf die änderungen, die aufgetreten in späteren überarbeitungen:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Ich benutze nicht die Eclipse-viel, aber in TortoiseSVN Sie können dies tun, von der aus der log-Dialog;einfach mit der rechten Maustaste auf die revision, die Sie wiederherstellen möchten, und wählen Sie "änderungen dieser revision Rückgängig machen".

In dem Fall, dass die Dateien, die Sie wiederherstellen möchten "schlechte Veränderungen", hatte "guten Veränderungen" in späteren überarbeitungen, dann der Prozess ist der gleiche.Die änderungen aus dem "bad" revision wird verworfen werden, verlassen die änderungen von "gut" Revisionen unberührt, jedoch könnten Sie einen Konflikt bekommen.

Ich habe das gleiche problem, aber die Bereinigung eclipse-option funktioniert nicht für mich.

1) installieren Sie TortoiseSVN
2) Gehen Sie zu windows explorer und mit der rechten Maustaste auf Ihr Projekt-Verzeichnis
3 Wahl-CleanUp-option (durch aktivieren break-lock-option)

Es funktioniert.

Hoffe, das hilft jemandem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top