Schlechte Änderungen mit svn in Eclipse rückgängig machen

81

Angenommen, ich habe einige fehlerhafte Änderungen am Subversion-Repository vorgenommen. Dann begebe ich gute Änderungen, die ich behalten möchte.

Was wäre der einfachste Weg, um diese schlechten Änderungen in Eclipse zurückzusetzen und die guten Änderungen beizubehalten? Angenommen, Dateien, die sich auf fehlerhafte Änderungen beziehen, sind nicht dieselben wie Dateien, die sich auf gute Änderungen beziehen. Wie ändern sich die Dinge, wenn gute Änderungen an denselben Dateien wie schlechte Änderungen vorgenommen wurden?

Ich suche hauptsächlich nach einer Möglichkeit, dies über Eclipse-Plugins (Subclipse oder Subversive) zu tun, aber auch Befehlszeilenbefehle sind interessant.

Juha Syrjälä
quelle

Antworten:

30

Sie haben zwei Möglichkeiten, dies zu tun.

Quick and Dirty wählt Ihre Dateien (mit ctrl) in der Projekt-Explorer-Ansicht aus, klicken Sie mit der rechten Maustaste darauf, wählen Sie Replace with...und wählen Sie dann die beste Option für Sie, aus Latest from Repositoryoder eine BranchVersion. Nachdem Sie diese Dateien erhalten haben, ändern Sie sie (mit einem Leerzeichen oder korrigieren Sie etwas, Ihren Aufruf und verpflichten Sie sie, eine neuere Revision zu erstellen.

Eine sauberere Methode ist die Auswahl Mergeim Teammenü und die Navigation durch den Assistenten, mit dem Sie die alte Version in der aktuellen Version wiederherstellen können.

Beide Befehle haben ihre Befehlszeilenäquivalente: svn revertund svn merge.

Fernando Barrocal
quelle
1
Das neueste aus dem Repository ist das falsch eingecheckte, daher sehe ich nicht, wo es hilfreich sein sollte. Außerdem möchte Eclipse Ihnen bei diesem Problem nicht helfen, da nur die Erwähnungsoption verfügbar ist, wenn Sie mehrere Dateien auswählen (wahrscheinlich, weil deren neueste Version unterschiedlich ist).
Macilias
79

In Eclipse Ganymede (Subclipse)

Wählen Sie ein Projekt / eine Datei mit fehlerhaften Änderungen aus und wählen Sie im Popup-Menü Folgendes aus:

Team -> Verlauf anzeigen

Revisionen, die sich auf dieses Projekt / diese Datei beziehen, werden auf der Registerkarte Verlauf angezeigt.

Suchen Sie nach einer Revision, bei der "fehlerhafte Änderungen" vorgenommen wurden, und wählen Sie im Popup-Menü Folgendes aus:

Änderungen von Revision X zurücksetzen

Dadurch werden Änderungen an Dateien, die innerhalb einer fehlerhaften Revision geändert wurden, mit einer Revision vor einer fehlerhaften Revision zusammengeführt.

Hier gibt es zwei Szenarien:

  1. Wenn Sie keine Änderungen für diese Datei festgeschrieben haben (fehlerhafte Revision ist die letzte Revision für diese Datei), werden einfach Änderungen entfernt, die bei fehlerhafter Revision vorgenommen wurden. Diese Änderungen werden mit Ihrer Arbeitskopie zusammengeführt, sodass Sie sie festschreiben müssen.

  2. Wenn Sie einige Änderungen für diese Datei vorgenommen haben (eine fehlerhafte Revision ist nicht die letzte Revision für diese Datei), müssen Sie den Konflikt manuell lösen. Angenommen, Sie haben die Datei readme.txt mit und die falsche Revisionsnummer ist 33. Außerdem haben Sie in Revision 34 ein weiteres Commit für diese Datei vorgenommen. Nachdem Sie Änderungen aus Revision 33 zurücksetzen ausgewählt haben, wird in Ihrer Arbeitskopie Folgendes angezeigt:

readme.txt.merge-left.r33 - schlechte Revision

readme.txt.merge-right.r32 - vor einer schlechten Revision

readme.txt.working - Arbeitskopieversion (wie in r34, wenn Sie keine nicht festgeschriebenen Änderungen haben)

Die ursprüngliche readme.txt wird als konfliktreich markiert und enthält eine zusammengeführte Version (bei der Änderungen aufgrund einer fehlerhaften Revision entfernt werden) mit einigen Markierungen (<<<<<<< .working usw.). Wenn Sie nur Änderungen aus einer fehlerhaften Revision entfernen und danach vorgenommene Änderungen beibehalten möchten, müssen Sie nur die Markierungen entfernen. Andernfalls können Sie Inhalte aus einer der drei oben genannten Dateien in die Originaldatei kopieren. Was auch immer Sie wählen, wenn Sie fertig sind, markieren Sie den Konflikt gelöst durch

Team - Mark gelöst

Temporäre Dateien werden entfernt und Ihre Datei wird als geändert markiert. Wie in 1 müssen Sie Änderungen festschreiben.

Beachten Sie, dass dadurch die Revision nicht aus dem Revisionsverlauf im SVN-Repository entfernt wird. Sie haben einfach eine neue Revision vorgenommen, bei der Änderungen von einer fehlerhaften Revision entfernt werden.

kirlich
quelle
14

Wenn Sie jeweils 1 Datei erstellen möchten, können Sie in der Verlaufsansicht die Datei aufrufen, vorausgesetzt, Sie haben ein Eclipse SVN-Plugin installiert. "Team-> Verlauf anzeigen"

Suchen Sie in der Verlaufsansicht die letzte gute Version dieser Datei, klicken Sie mit der rechten Maustaste und wählen Sie "Inhalt abrufen". Dadurch wird Ihre aktuelle Version durch den Inhalt dieser Version ersetzt. Dann können Sie die Änderungen festschreiben, wenn Sie alles repariert haben.

Matt
quelle
6

In Eclipse mit Subversive:

Klicken Sie mit der rechten Maustaste auf Ihr Projekt> Team> Zusammenführen

Wählen Sie im Zusammenführungsfenster die Revisionen aus, die Sie wie gewohnt zurücksetzen möchten, aktivieren Sie jedoch auch das Kontrollkästchen "Umgekehrte Zusammenführung".

Wie gewohnt zusammenführen.

Tuukka Mustonen
quelle
1

Das svnbook enthält einen Abschnitt darüber, wie Sie mit Subversion die Änderungen einer bestimmten Revision rückgängig machen können, ohne die Änderungen zu beeinflussen, die in nachfolgenden Revisionen vorgenommen wurden:

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

Ich benutze Eclipse nicht viel, aber in TortoiseSVN können Sie dies über den Protokolldialog tun. Klicken Sie einfach mit der rechten Maustaste auf die Revision, die Sie zurücksetzen möchten, und wählen Sie "Änderungen aus dieser Revision zurücksetzen".

Für den Fall, dass die Dateien, für die Sie "schlechte Änderungen" rückgängig machen möchten, in nachfolgenden Revisionen "gute Änderungen" hatten, ist der Vorgang der gleiche. Die Änderungen aus der "schlechten" Revision werden rückgängig gemacht, wobei die Änderungen aus "guten" Revisionen unberührt bleiben. Es kann jedoch zu Konflikten kommen.

Nick Higgs
quelle
0

Ich habe das gleiche Problem, aber die CleanUp-Eclipse-Option funktioniert bei mir nicht.

1) TortoiseSVN installieren
2) Gehen Sie zum Windows Explorer und klicken Sie mit der rechten
Maustaste auf Ihr Projektverzeichnis. 3 Wählen Sie die Option CleanUp (indem Sie die Option Break Lock aktivieren).

Es funktioniert.

Hoffe das hilft jemandem.

Gora
quelle