Beliebte Depot-Layouts

Es gibt mehrere verschiedene Wege, Pakete in den Depots zu speichern (oder, falls sie es wünschen, in mehreren Depots). Normalerweise erwartet svn-buildpackage eine Verzeichnisstruktur ähnlich der im Subversion-Buch beschriebenen, die wie folgt aussieht:

Beispiel 1.1. Beispiel einer Verzeichnishierarchie

paketA/
   trunk/
   branches/
   branches/upstream
   tags/

projektB/
   trunk/
   branches/
   branches/entwicklerFoo
   tags/
   

paketA oben könnte ein typisches Quellpaket auf Basis der Ursprungsautoren sein und projektB könnte ein natives Debian-Paket mit einem separaten Zweig sein, den Entwickler Foo für seine eigenen Experimente erstellt hat. Weitere Einzelheiten über die Verwendung von Subversion-Zweigen finden Sie unter Subversion Book/Branches.

Beachten Sie außerdem, dass Kennzeichen (Tags) sich stark von denen in CVS unterscheiden. Subversion verwaltet keine magischen Kennzeichen, die mit einigen Dateien verknüpft sind. Stattdessen verfolgt es die Dateistatus und Bewegungen, daher bedeutet Kennzeichnen so etwas wie das Erstellen einer Kopie einer bestimmten Version der Dateizusammenstellung (innerhalb des Depots, Festplattenplatz sparend). Daher ist der Debian-Zweig des veröffentlichten Quellpakets im trunk/ enthalten und durch Kopieren (Spiegeln) des Hauptasts (Trunk) nach tags/DEBIAN-REVISION gekennzeichnet. Das gleiche geschieht für die Veröffentlichungen der Ursprungsautoren. Zusätzlich wird die neuste Version der Ursprungsautoren nach branches/upstream/current gespiegelt. Nach wenigen Paket-Upgrade-Zyklen könnte der Verzeichnisbaum wie folgt aussehen:

Beispiel 1.2. Beispiel einer Verzeichniszweighierarchie

# svn ls -R file:///home/user/svn-repo/dev/translucency
branches/
branches/upstream/
branches/upstream/0.5.9/
branches/upstream/0.5.9/AUTHORS
branches/upstream/0.5.9/COPYING
…
branches/upstream/0.6.0/
branches/upstream/0.6.0/AUTHORS
branches/upstream/0.6.0/COPYING
…
branches/upstream/current/
branches/upstream/current/AUTHORS
branches/upstream/current/COPYING
… dasselbe Zeug wie in 0.6.0 …
tags/
tags/0.5.9-1/
…
tags/0.5.9-1/debian/
tags/0.5.9-1/debian/README.Debian
…
tags/0.6.0-1/
tags/0.6.0-1/AUTHORS
…
tags/0.6.0-1/debian/
tags/0.6.0-1/debian/README.Debian
tags/0.6.0-1/debian/changelog
…
trunk/
trunk/AUTHORS
trunk/COPYING
… Hauptzweig für 0.6.0-2 wird vorbereitet …

svn-buildpackage unterstützt auch das zweite Depot-Layout, das im Subversion-Buch vorgeschlagen wird (Funktion/Paket), aber svn-inject gibt dem oben dokumentierten den Vorzug. Sowohl svn-buildpackage als auch svn-upgrade sollten in der Lage sein, das Depot-Layout und den Speicherort der Paketdateien automatisch zu bestimmen.

Theoretisch müssen Sie diesen Beispielen nicht folgen und die Verzeichnisse trunk, branches und tags an Speicherorten ablegen, die Ihnen eher zusagen. Aber svn-buildpackage und andere Skripte werden die Dateien nicht automatisch finden. Daher müssen Sie die Datei .svn/deb-layout in Ihrem Arbeitsverzeichnis bearbeiten und die Pfade dort setzen. Lesen Sie die alte Kurzfassung wie automatische Erkennung funktioniert sowie das Konfigurationsbeispiel.

Am Ende könnte die Arbeitverzeichnisstruktur auf Ihrem Entwicklungssystem wie folgt aussehen:

Beispiel 1.3. Beispielkonfiguration

dev/ # Basisverzeichnis, kann unter Versionskontrolle stehen
dev/foo # trunk-Verzeichnisse verschiedener Pakete
dev/bar # Inhalt, der trunk entspricht, siehe oben
dev/tarballs # wo »orig«-Tarballs gespeichert sind, kann unter Versionskontrolle stehen
dev/build-area # wohin die Pakete vorübergehend exportiert und gebaut werden