Diese Dokumentation wurde zur Beschreibung der Serie 1.6.x von Subversion erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.

Innerhalb des Verwaltungsbereichs für Arbeitskopien

Wie bereits erwähnt, besitzt jedes Verzeichnis einer Subversion-Arbeitskopie ein besonderes Unterverzeichnis namens .svn, das Verwaltungsdaten zum Arbeitskopieverzeichnis beherbergt. Subversion verwendet die Informationen in .svn, um Dinge wie diese zu verfolgen:

Die Struktur sowie der Inhalt des Verwaltungsbereichs einer Subversion-Arbeitskopie werden als Implementierungsdetails betrachtet, die nicht für menschliche Bearbeitung vorgesehen sind. Entwicklern wird nahegelegt, die öffentlichen APIs oder die von Subversion zur Verfügung gestellten Werkzeuge zu benutzen, um die Daten der Arbeitskopie zu bearbeiten, statt diese Dateien direkt zu lesen und zu verändern. Die von der Arbeitskopie-Bibliothek für ihre Verwaltungsdaten verwendeten Dateiformate ändern sich hin und wieder – eine Tatsache, die dem Durchschnittsanwender dank der öffentlichen APIs verborgen bleibt. Nur um Ihre unbändige Neugier zu stillen, werden wir in diesem Abschnitt einige dieser Implementierungsdetails offenlegen.

Die Datei entries

Die vielleicht wichtigste Datei im Verzeichnis .svn ist die Datei entries. Sie enthält den größten Teil der Verwaltungsinformationen zu den versionierten Elementen in einem Verzeichnis der Arbeitskopie. Diese eine Datei verfolgt die Projektarchiv-URLs, die ursprüngliche Revision, Prüfsummen von Dateien, ursprünglichen Text und Zeitstempel von Eigenschaften, Informationen zur Ablaufkoordination und zu Konfliktzuständen, Informationen zur letzten Übergabe (Autor, Revision, Zeitstempel), die Geschichte der lokalen Kopie – praktisch alles, was ein Subversion-Client über eine versionierte (oder noch zu versionierende) Ressource wissen möchte!

Kenner der Verwaltungsverzeichnisse von CVS werden zu diesem Zeitpunkt bemerkt haben, dass die Datei .svn/entries von Subversion neben anderen Dingen denselben Zweck verfolgt wie eine Vereinigung der CVS-Dateien CVS/Entries, CVS/Root und CVS/Repository.

Das Format der Datei .svn/entries hat sich im Laufe der Zeit geändert. Als ursprüngliche XML-Datei verwendet sie nun ein angepasstes – doch immer noch menschenlesbares – Dateiformat. Obwohl XML eine gute Wahl für die ersten Entwickler von Subversion war, die regelmäßig den Inhalt der Datei (und abhängig davon, Subversions Verhalten) debuggen mussten, ist mittlerweile die Notwendigkeit der Fehlersuche aus der frühen Entwicklungsphase dem Wunsch der Benutzer nach einer flotteren Ausführung gewichen. Ihnen sollte bewusst sein, dass die Arbeitskopie-Bibliothek automatisch Arbeitskopien auf ein neueres Format bringt – sie liest das alte Format und schreibt das neue – was Ihnen einerseits die Bereitstellung einer neuen Arbeitskopie erspart, andererseits allerdings zu Komplikationen führen kann, falls verschiedene Versionen von Subversion dieselbe Arbeitskopie verwenden wollen.

Unveränderte Kopien und Eigenschafts-Dateien

Wie bereits erwähnt, enthält das Verzeichnis .svn auch die unveränderten Versionen textbasierter Dateien. Sie finden diese in .svn/text-base. Die Vorteile dieser unveränderten Kopien sind vielfältig – Überprüfung lokaler Änderungen und Vergleiche ohne Netzzugriff, Wiederherstellung veränderter oder verlorengegangener Dateien ohne Netzzugriff, effizientere Übertragung von Änderungen an den Server — jedoch zu dem Preis, dass jede versionierte Datei mindestens zweimal auf der Platte gespeichert wird. Heutzutage scheint das jedoch für die meisten Dateien ein vernachlässigbarer Nachteil zu sein. Jedoch sieht es nicht mehr so schön aus, wenn die Größe Ihrer Dateien anwächst. Es wird daher überlegt, die Anwesenheit der Datei text-base optional zu machen. Ironischerweise jedoch wird das Vorhandensein von text-base mit dem Anwachsen der Größe Ihrer versionierten Dateien immer ausschlaggebender — wer möchte schon eine riesige Datei über das Netz versenden, obwohl nur eine winzige Änderung übergeben werden soll?

Einen ähnlichen Zweck wie die text-base-Dateien verfolgen die Eigenschafts-Dateien und deren unveränderte Kopien prop-base, die in .svn/props bzw. .svn/prop-base untergebracht sind. Da selbst Verzeichnisse Eigenschaften haben können, gibt es auch die Dateien .svn/dir-props und .svn/dir-prop-base.