28 Stimmen

Wann wird svn BASE gleich dem HEAD

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.

39voto

gbarry Punkte 9957

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.

7voto

matpie Punkte 16396

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.

Revision Spezifizierer

3voto

codein Punkte 31

Es kommt darauf an, wann man die Logs anschaut, denn svn log ohne url zeigt das BASE Log, aber mit url das HEAD Log, deshalb benutze ich immer "svn log -rHEAD:1" um alle Änderungen zu sehen.

0voto

Bert Huijben Punkte 19285

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X