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.
quelle
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:
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.
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.
quelle
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.
quelle
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.
quelle
Ich habe ein paar Blog-Beiträge zu diesem Thema geschrieben. Eine, die Subclipse-zentriert ist: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html und eine, die befehlszeilenzentriert ist: http: //blogs.collab. net / subversion / 2007/07 / Sekundenchancen /
quelle
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.
quelle
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.
quelle