Was ist der Unterschied zwischen "Rollback ..." und "Back Out Submitted Changelist #####" in Perforce P4V

198

Ich möchte die Änderungen von einem meiner Checkins rückgängig machen. Im Kontextmenü mit der rechten Maustaste der jeweiligen Änderungsliste gibt es zwei Möglichkeiten:

  • Rollback ...
  • Zurück aus eingereichten Changelist

Was ist der Unterschied zwischen diesen beiden? In welchen Situationen sollte ich eine verwenden?

Dave Andersen
quelle
3
In diesem Fall war "Zurücksetzen eingereichter Changelist" die richtige Option für meine Situation (ich wollte nur Änderungen vom Einchecken zurücksetzen). Danke für die tollen Antworten.
Dave Andersen

Antworten:

222

Beide Vorgänge stellen eine Reihe von Dateien auf den vorherigen Status zurück und sind wesentlich schneller und sicherer, um Fehler rückgängig zu machen als mit dem p4 obliterateBefehl (und Sie benötigen keinen Administratorzugriff, um sie zu verwenden).

Im Fall von "Rollback ..." kann dies eine beliebige Anzahl von Dateien sein, sogar ein ganzes Depot. Sie können festlegen, dass ein Rollback auf eine bestimmte Revision, Änderungsliste oder Bezeichnung durchgeführt werden soll. Die Dateien werden in dem Zustand wiederhergestellt, in dem sie sich zum Zeitpunkt der Erstellung dieser Revision, Änderungsliste oder Bezeichnung befanden.

Im Fall von "Back Out Submitted Changelist #####" ist der Wiederherstellungsvorgang auf die Dateien beschränkt, die in der Änderungsliste ##### eingereicht wurden. Diese Dateien werden in dem Zustand wiederhergestellt, in dem sie sich befanden, bevor Sie diese Änderungsliste übermittelt haben, sofern seitdem keine Änderungen an diesen Dateien vorgenommen wurden. Wenn nachträgliche Änderungen an einer dieser Dateien vorgenommen wurden, teilt Perforce Ihnen mit, dass diese Dateien jetzt veraltet sind. Sie müssen mit der Kopfrevision synchronisieren und dann die Unterschiede beheben. Auf diese Weise verhindern Sie nicht versehentlich Änderungen, die Sie tatsächlich behalten möchten.

Beide Operationen funktionieren, indem im Wesentlichen alte Revisionen als neue Revisionen eingereicht werden. Wenn Sie ein "Rollback ..." durchführen, stellen Sie die Dateien in dem Zustand wieder her, in dem sie sich zu einem bestimmten Zeitpunkt befanden , unabhängig davon, was seitdem mit ihnen geschehen ist. Wenn Sie ein "Zurücksetzen ..." durchführen, versuchen Sie, die zu einem bestimmten Zeitpunkt vorgenommenen Änderungen rückgängig zu machen , während Sie die seitdem vorgenommenen Änderungen beibehalten.

Rabe
quelle
18
Ich denke, "Back Out Submitted Changelist #####" wird versuchen , Änderungen beizubehalten , die nach der angegebenen Änderungsliste an denselben Dateien vorgenommen wurden.
Ian Ringrose
1
@ Ian: Gute Beobachtung. Als ich das schrieb, dachte ich daran, einen Fehler sofort zu korrigieren. Wie es normalerweise der Fall ist , wird es komplizierter , wenn Sie feststellen, dass Sie etwas viel später rückgängig machen möchten . Ich habe meine Antwort verfeinert.
Rabe
@IanRingrose Ich habe gerade eine "Backout" -Operation durchgeführt, und es sieht so aus, als würde nicht versucht, die danach vorgenommenen Änderungen beizubehalten . Ich musste eine Synchronisierung durchführen und dann auflösen, um die Änderungen zurückzugewinnen, die nach dem Backout übermittelt wurden.
GDW2
@ gdw2, ich denke, wenn Sie einen "Rollback" machen würden, würden Sie dann nicht die Option bekommen, "aufzulösen, um die Änderungen zurückzubekommen, die nach dem ..." eingereicht wurden
Ian Ringrose
1
Obwohl die Dateien in dem Zustand wiederhergestellt werden, in dem sie sich befanden, sind die Metadaten dies nicht. Wenn Sie versuchen, eine Integration von einem anderen Zweig zurückzusetzen, können Sie diese Integration nicht erneut durchführen, da die Metadaten angeben, dass sie bereits integriert sind.
Will Brode
17

Stornieren Sie eine Änderungslistenübermittlung

Sie können eine erfolgreiche Übermittlung der Änderungsliste nicht rückgängig machen, aber Sie können zuvor übermittelte Änderungen auf zwei Arten rückgängig machen:

Durch das Zurücksetzen wird eine Datei oder ein Satz von Dateien auf eine bestimmte Änderungsliste, ein bestimmtes Datum oder eine bestimmte Revision zurückgesetzt. Nach diesem Zeitpunkt vorgenommene Änderungen werden nicht beibehalten. Durch das Zurücksetzen werden bestimmte Änderungen entfernt, die an einer bestimmten Änderungsliste, einem bestimmten Datum oder einer bestimmten Überarbeitung vorgenommen wurden. Der Benutzer kann jedoch Änderungen beibehalten, die in nachfolgenden Überarbeitungen vorgenommen wurden.

Weitere Informationen finden Sie unter https://www.perforce.com/perforce/r13.1/manuals/p4v/Working_with_changelists.html

Smartmarkey
quelle
8

Backout stellt unsere Änderungen wieder her oder macht sie rückgängig. Auf diese Weise macht P4 die Änderungen in einer Änderungsliste (Standard oder neu) in unserem lokalen Arbeitsbereich rückgängig. Wir müssen diese gesicherte Änderungsliste dann wie andere Änderungslisten einreichen / festschreiben. Der zweite Teil ist hier wichtig, da die Änderungsliste auf dem Server nicht automatisch zurückgesetzt wird. Wir müssen die zurückgesetzte Änderungsliste einreichen (was nach dem Ausführen sinnvoll ist, aber ich ging zunächst davon aus, dass dies automatisch geschieht).

Wie von anderen erwähnt, verfügt Rollback über größere Funktionen. Es kann Änderungen an einem bestimmten Datum, einer bestimmten Änderungsliste oder einer Revisionsnummer wiederherstellen.

user841717
quelle
4

Rollback ... fordert Sie auf, einen Ordner für das Rollback auszuwählen, dh es funktioniert für bestimmte Ordner, und Sie können ein Rollback auf Beschriftungen, Änderungslisten oder Datumsangaben durchführen. Das Zurücksetzen funktioniert für die Dateien in bestimmten Änderungslisten.

akf
quelle
4

Ich erkläre dies den Benutzern, indem ich Perforce-Änderungslisten mit einem Stapel (aus Datenstrukturen) vergleiche.

Durch das Zurücksetzen wird ein Element von einer beliebigen Stelle im Stapel entfernt.

Durch das Zurückrollen werden n Elemente vom oberen Rand des Stapels entfernt.

gmaghera
quelle
0

Im einfachsten Fall besteht der Unterschied in der Vielzahl:

  • Backout wird aus einer einzelnen Änderungsliste entfernt (unabhängig davon, ob die letzte oder nicht). dh es macht eine einzelne Änderungsliste rückgängig.
  • Rollback rollt Änderungen so oft zurück, wie es nötig ist, um zu einer vorherigen Änderungsliste zu gelangen. dh es werden mehrere Änderungslisten rückgängig gemacht.

Früher habe ich vergessen, welches welches ist und musste es am Ende oft nachschlagen. Um dieses Problem zu beheben, stellen Sie sich vor, Sie rollen mehrere Umdrehungen zurück, und hoffentlich hilft Ihnen (und mir!) Die Tatsache, dass das Zurückrollen Plural ist , dabei, sich daran zu erinnern, welches welches ist. Backout klingt für mich weniger plural als Rollback . Stellen Sie sich vor, Sie ziehen sich von einem einzelnen Parkplatz zurück.

Die Mnemonik lautet also:

  • Rollback → Mehrfachumdrehungen
  • Zurück → Zurück von einem einzelnen Parkplatz

Ich hoffe das hilft!

Darrenp
quelle