Download Name - Version Control with Subversion

Transcript
Fortgeschrittene Themen
Geht Subversion einen Tag vor?
Falls Sie ein einzelnes Datum ohne Urzeit als Revision angeben, (z.B. 2006-11-27), könnten Sie denken, dass
Subversion Ihnen die letzte Revision vom 27. November liefert. Stattdessen bekommen Sie eine Revision vom 26. oder
sogar noch früher. Denken Sie daran, dass Subversion die letzte Revision des Projektarchivs zum angegebenen Zeitpunkt
findet. Falls Sie ein Datum ohne Uhrzeit angeben, etwa 2006-11-27, nimmt Subversion die Uhrzeit 00:00:00 an, so
dass die Suche nach der letzten Revision nichts vom 27. zurückliefert.
Falls Sie den 27. für Ihre Suche berücksichtigen möchten, können Sie entweder den 27. mit Uhrzeit angeben
({"2006-11-27 23:59"}) oder einfach den nächsten Tag ({2006-11-28}).
Sie können auch einen Zeitraum angeben. Subversion findet dann alle Revisionen zwischen den und einschließlich der Daten:
$ svn log -r {2006-11-20}:{2006-11-29}
…
Da der Zeitstempel einer Revision als eine unversionierte, änderbare Eigenschaft einer Revision gespeichert ist
(siehe „Eigenschaften“), können Revisions-Zeitstempel geändert werden, um die wahre Chronologie zu fälschen,
oder gar vollständig entfernt werden. Die Fähigkeit von Subversion, Revisionsdaten in Revisionsnummern
überführen zu können, beruht auf einer sequentiellen Ordnung der Revisions-Zeitstempel – je jünger die
Revision, desto jünger der Zeitstempel. Falls diese Ordnung nicht aufrechterhalten wird, werden Sie
voraussichtlich feststellen, dass der Versuch, Daten zur Angabe von Revisionsbereichen in Ihrem Projektarchiv
zu verwenden, nicht immer die Daten zurückliefern wird, die Sie erwartet hätten.
Eigenschaften
Wir haben bereits detailliert besprochen, wie Subversion unterschiedliche Versionen von Dateien und Verzeichnissen im
Projektarchiv ablegt und wieder herausholt. Ganze Kapitel haben sich dieser fundamentalen Funktionalität des Werkzeugs
gewidmet. Falls die Versionierungsunterstützung an diesem Punkt aufhörte, wäre Subversion aus Versionskontrollperspektive
immer noch vollständig.
Aber sie hört hier noch nicht auf.
Zusätzlich zur Versionierung Ihrer Verzeichnisse und Dateien liefert Subversion Schnittstellen zum Hinzufügen, Ändern und
Entfernen versionierter Metadaten zu allen versionierten Dateien und Verzeichnissen. Wir bezeichnen diese Metadaten als
Eigenschaften. Sie sind so etwas wie Tabellen mit zwei Spalten, die Namen von Eigenschaften auf beliebige Werte abbilden
und an jedes Objekt Ihrer Arbeitskopie gehängt werden. Im Allgemeinen können Sie die Namen und Werte der Eigenschaften
frei bestimmen, mit der Einschränkung, dass die Namen nur aus ASCII-Zeichen bestehen dürfen. Und das Beste an diesen
Eigenschaften ist, dass auch sie genauso versioniert sind wie der textuelle Inhalt Ihrer Dateien. Sie können Änderungen an
Eigenschaften ebenso einfach editieren, übergeben oder rückgängig machen wie Änderungen an Dateiinhalten. Das Versenden
und Empfangen von Änderungen an Eigenschaften geschieht im Rahmen Ihrer typischen Übergabe- und
Aktualisierungstätigkeiten – Sie müssen hierfür Ihre grundlegenden Prozesse nicht anpassen.
Subversion hat die Menge aller Eigenschaften die mit svn: beginnen für sich reserviert. Obwohl heute nur eine
handvoll dieser Eigenschaften in Gebrauch sind, sollten Sie es vermeiden, spezielle Eigenschaften für Ihren
Gebrauch zu erzeugen, die diesen Präfix besitzen. Sonst laufen Sie Gefahr, dass ein künftiger Stand von
Subversion ein Verhalten oder eine Funktionalität beinhaltet, die durch eine Eigenschaft gleichen Namens
beeinflusst wird, aber vielleicht mit einer völlig anderen Auslegung.
Eigenschaften tauchen auch an einer anderen Stelle von Subversion auf. So wie Dateien und Verzeichnisse mit beliebigen
Eigenschafts-Namen und -Werten versehen werden können, kann auch jede Revision als Ganzes beliebige Eigenschaften
bekommen. Die selben Einschränkungen gelten auch hier – menschenlesbare Namen und beliebige binäre Werte. Der
Hauptunterschied ist, dass Revisions-Eigenschaften unversioniert sind. Mit anderen Worten: falls Sie den Wert einer
Revisions-Eigenschaft ändern oder die Eigenschaft löschen, gibt es mit Subversion Bordmitteln keine Möglichkeit, den
ursprünglichen Wert wiederherzustellen.
39