Ich habe begonnen, Subversion mit TortoiseSVN zu verwenden. Wenn ich das Protokoll öffne und mit der rechten Maustaste auf eine alte Revision klicke, werden zwei Optionen angezeigt, die so klingen, als würden sie auf eine ältere Version zurückgesetzt: "Element auf Revision aktualisieren" und "Auf diese Revision zurücksetzen".
Ich verstehe, dass das Aktualisieren auf eine ältere Version verwendet wird, wenn Sie nur auf eine alte Version zurückblicken möchten, aber das Repository nicht wirklich ändern möchten. Zurücksetzen ist, wenn Sie es tatsächlich vermasselt haben und möchten, dass die neueste Version im Repository mit einer älteren Version identisch ist.
Angenommen, die HEAD-Revision ist 100 und ich kehre zu 95 zurück. Dadurch wird meine Arbeitskopie wieder zu 95 zusammengeführt. Dann kann ich diese Änderung in das Repository übernehmen, wodurch die Revision 101 korrekt erstellt wird. Wie ist das anders, wenn ich auf Revision 95 zurück aktualisieren würde? Kehrt es nicht immer noch die Änderungen gegenüber den letzten Revisionen um? Ich bin verwirrt darüber, wie sich der Status meiner Arbeitskopie nach dem Zurücksetzen oder Aktualisieren auf eine ältere Revision unterscheidet.
quelle
update to
undrevert to/from
behandeln lokale Änderungen (unbestätigte Änderungen)?Um zu verstehen, wie sich der Status Ihrer Arbeitskopie in beiden Szenarien unterscheidet, müssen Sie das Konzept der BASE-Revision verstehen :
Ihre Arbeitskopie enthält eine Momentaufnahme jeder Datei (in einem .svn-Ordner versteckt) in dieser BASE-Revision, dh wie beim letzten Abrufen aus dem Repository . Dies erklärt, warum Arbeitskopien doppelt so viel Platz beanspruchen und wie es möglich ist, lokale Änderungen ohne Netzwerkverbindung zu untersuchen und sogar rückgängig zu machen.
Durch Aktualisieren des Elements auf Revision wird diese Basisrevision geändert, sodass BASE nicht mehr aktuell ist. Wenn Sie versuchen, lokale Änderungen zu übernehmen, stellt SVN fest, dass Ihre BASE nicht mit dem Repository-HEAD übereinstimmt. Das Festschreiben wird abgelehnt, bis Sie ein Update (und möglicherweise eine Zusammenführung) durchführen, um dies zu beheben.
Zurücksetzen auf Revision ändert BASE nicht. Dies entspricht konzeptionell fast der manuellen Bearbeitung der Datei, um sie an eine frühere Version anzupassen.
quelle
update to
undrevert to/from
behandeln lokale Änderungen (unbestätigte Änderungen)?Die Dateien in Ihrer Arbeitskopie sehen möglicherweise so aus genau das gleiche nach, aber sie sind immer noch sehr unterschiedliche Aktionen - das Repository in einem ganz anderen Zustand befindet, und Sie werden verschiedene Optionen zur Verfügung haben nach dem Zurücksetzen als „Aktualisierung“ auf eine alte Version .
Kurz gesagt, "Aktualisieren auf" wirkt sich nur auf Ihre Arbeitskopie aus, "Zusammenführen und Festschreiben rückgängig machen" wirkt sich jedoch auf das Repository aus.
Wenn Sie auf eine alte Revision "aktualisieren", hat sich das Repository nicht geändert: In Ihrem Beispiel ist die HEAD-Revision immer noch 100. Sie müssen nichts festschreiben, da Sie nur mit Ihrer Arbeitskopie herumspielen. Wenn Sie Änderungen an Ihrer Arbeitskopie vornehmen und versuchen, ein Commit durchzuführen, wird Ihnen mitgeteilt, dass Ihre Arbeitskopie veraltet ist, und Sie müssen sie aktualisieren, bevor Sie ein Commit durchführen können. Wenn jemand anderes, der an demselben Repository arbeitet, ein "Update" durchführt oder wenn Sie eine zweite Arbeitskopie auschecken, ist dies r100.
Wenn Sie jedoch eine alte Revision "rückgängig machen", basiert Ihre Arbeitskopie weiterhin auf dem HEAD (vorausgesetzt, Sie sind auf dem neuesten Stand). Sie erstellen jedoch eine neue Revision, um die unerwünschten Änderungen zu ersetzen. Sie müssen diese Änderungen festschreiben, da Sie das Repository ändern. Sobald alle Aktualisierungen oder neuen Arbeitskopien auf der Basis des HEAD durchgeführt wurden, wird r101 mit den Inhalten angezeigt, die Sie gerade festgeschrieben haben.
quelle
Aktualisieren Sie Ihre Arbeitskopie auf die ausgewählte Revision. Nützlich, wenn Ihre Arbeitskopie eine Zeit in der Vergangenheit widerspiegeln soll oder wenn weitere Festschreibungen im Repository vorgenommen wurden und Sie Ihre Arbeitskopie Schritt für Schritt aktualisieren möchten. Es ist am besten, ein ganzes Verzeichnis in Ihrer Arbeitskopie zu aktualisieren, nicht nur eine Datei. Andernfalls kann Ihre Arbeitskopie inkonsistent sein. Dies wird verwendet, um einen bestimmten Revisionszweck zu testen. Wenn Ihr Test abgeschlossen ist, können Sie diesen Befehl verwenden, um eine andere Revision zu testen oder SVN Update zu verwenden , um HEAD abzurufen
Wenn Sie eine frühere Änderung dauerhaft rückgängig machen möchten, verwenden Sie Auf diese Revision zurücksetzen stattdessen Auf zurücksetzen.
- aus dem TSVN-Hilfedokument
Wenn Sie Ihre Arbeitskopie auf eine frühere Version aktualisieren, wirkt sich dies nur auf Ihre eigene Arbeitskopie aus. Nachdem Sie einige Änderungen vorgenommen haben und eine Festschreibung vornehmen möchten, schlagen Sie fehl. TSVN weist Sie darauf hin, dass Sie Ihr WC zuerst auf die neueste Version aktualisieren müssen. Wenn Sie zurücksetzen Für eine Version können Sie ein Repository festlegen. Jeder Benutzer kehrt nach einer Aktualisierung zur Version zurück.
quelle
Der Text aus der Schildkrötenreferenz:
Element auf Revision aktualisieren aktualisieren Aktualisieren Sie Ihre Arbeitskopie auf die ausgewählte Revision. Nützlich, wenn Ihre Arbeitskopie eine Zeit in der Vergangenheit widerspiegeln soll oder wenn weitere Festschreibungen im Repository vorgenommen wurden und Sie Ihre Arbeitskopie Schritt für Schritt aktualisieren möchten. Es ist am besten, ein ganzes Verzeichnis in Ihrer Arbeitskopie zu aktualisieren, nicht nur eine Datei. Andernfalls kann Ihre Arbeitskopie inkonsistent sein.
Wenn Sie eine frühere Änderung dauerhaft rückgängig machen möchten, verwenden Sie stattdessen Auf diese Revision zurücksetzen.
Zu dieser Revision zurückkehren Zu einer früheren Revision zurückkehren. Wenn Sie mehrere Änderungen vorgenommen haben und dann entscheiden, dass Sie wirklich zu dem Zustand in Revision N zurückkehren möchten, ist dies der Befehl, den Sie benötigen. Die Änderungen werden in Ihrer Arbeitskopie rückgängig gemacht, sodass dieser Vorgang das Repository erst beeinflusst, wenn Sie die Änderungen festschreiben. Beachten Sie, dass dadurch alle nach der ausgewählten Revision vorgenommenen Änderungen rückgängig gemacht werden und die Datei / der Ordner durch die frühere Version ersetzt wird.
Wenn sich Ihre Arbeitskopie in einem unveränderten Zustand befindet, wird Ihre Arbeitskopie nach dem Ausführen dieser Aktion als geändert angezeigt. Wenn Sie bereits lokale Änderungen haben, führt dieser Befehl die rückgängig gemachten Änderungen in Ihre Arbeitskopie ein.
Intern geschieht, dass Subversion eine umgekehrte Zusammenführung aller nach der ausgewählten Revision vorgenommenen Änderungen durchführt, wodurch die Auswirkungen dieser vorherigen Commits rückgängig gemacht werden.
Wenn Sie nach dem Ausführen dieser Aktion entscheiden, dass Sie das Rückgängigmachen rückgängig machen und Ihre Arbeitskopie wieder in den vorherigen unveränderten Zustand versetzen möchten, sollten Sie TortoiseSVN → Im Windows Explorer zurücksetzen verwenden, um die lokalen Änderungen zu verwerfen, die durch diese Aktion zum umgekehrten Zusammenführen vorgenommen wurden.
Wenn Sie einfach nur sehen möchten, wie eine Datei oder ein Ordner bei einer früheren Revision aussah, verwenden Sie stattdessen Update to Revision oder Save Revision as ....
quelle
@ BaltoStar Update auf Revisionssyntax:
http://svnbook.red-bean.com/de/1.6/svn.ref.svn.c.update.html
Wobei 30 die Revisionsnummer ist. Ich hoffe das hilft!
quelle