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