Ich hatte eine Frage bezüglich der BASE-Version in svn. Ich weiß, dass es sich dabei um die ursprüngliche Version eines Objekts handelt, die beim letzten Aktualisierungslauf entstanden ist, und svn diff und status werden grundsätzlich gegen diese Version ausgeführt. Wann wird die BASE-Version aktualisiert? Wird sie auf den HEAD aktualisiert, wenn update ausgeführt wird? Ist dies immer der Fall, auch wenn es während der Aktualisierung einen Konflikt gab? Was hat BASE im Falle eines Konflikts? Hat sie immer noch die Version vom letzten Update (vor dem letzten Update, das einen Konflikt verursacht hat) oder wird sie auf den HEAD aktualisiert, auch wenn es einen Konflikt gibt?
Auch wenn svn commit ausgeführt wird, nehme ich an, dass die BASE mit meinen lokalen Änderungen aktualisiert wird und zu diesem Zeitpunkt BASE, HEAD und meine lokale Kopie alle gleich sind? Vorausgesetzt, der Commit war erfolgreich.
Antworten
Zu viele Anzeigen?HEAD ist die letzte Revision im Repository. BASE ist die letzte Revision, die Sie aus dem Repository bezogen haben. Nach einer erfolgreichen Übertragung oder Aktualisierung sind sie identisch.
Wenn Sie Änderungen vornehmen, unterscheiden sich Ihre Dateien von den BASE-Kopien. Wenn Sie sie zurücksetzen, entsprechen sie wieder der BASE-Revision. Wenn ein Konflikt auftritt, aktualisieren Sie das Projektarchiv nicht. Vielmehr werden Ihre Dateien als "in Bearbeitung" betrachtet, als ob Sie Änderungen vornehmen würden. Nachdem Sie die Konflikte gelöst haben, haben Sie im Wesentlichen entschieden, wie die endgültigen Dateien aussehen werden, und Sie übertragen sie dann wie gewohnt. Konflikte sind also wie ein Fall von Sonderbearbeitung.
BASE ist die Revision Ihrer Arbeitskopie, wie sie im Projektarchiv vorhanden ist. Mit anderen Worten: Ihre Revision ohne die Änderungen, die Sie vorgenommen haben. Wenn Sie also svn update
eine Datei oder einen Ordner in HEAD, dann sind BASE und HEAD gleich.
Wenn es einen Konflikt gibt, wird BASE die Revision vor der Übergabe, die einen Konflikt mit Ihrer Arbeitskopie verursacht hat.
Laufen lassen svn info
auf einen Artikel, um seine BASE-Revision zu sehen.
Theorie : Nach einer erfolgreichen rekursiven Aktualisierung oder einem Wechsel wird die Basisversion aller Ihrer Dateien zum Kopf. Nach einem Commit oder einer Teilaktualisierung können einige Dateien auf der HEAD-Revision sein, aber nur nach einer Aktualisierung, die keine Dateien übersprungen hat, können Sie sicher sein, dass alle Dateien auf der gleichen Version sind. (Gründe für das Überspringen sind nicht versionierte Hindernisse oder Konflikte).
Aber Warum sollten Sie das wissen? Subversion sollte dies intern wissen, aber dieses Wissen sollte in den meisten Fällen für den Benutzer nicht wirklich von Bedeutung sein. (Subversion warnt Sie automatisch, wenn Dateien veraltet sind).
Soweit ich das beurteilen kann, müssen Sie sich nur dann vergewissern, dass Sie sich auf einer stabilen Version befinden, wenn Sie einen Zweig aus einer Arbeitskopie erstellen.