Eine besondere Funktionalität von svn-buildpackage ist
der sogenannte mergeWithUpstream-Modus. Viele Projekte
möchten nicht die ganze Quelle der Ursprungsautoren unter Versionskontrolle
halten, z.B. wegen der großen Menge an Plattenplatz und
Verarbeitungszeit. Manchmal ist es sinnvoll, nur das
debian/
-Verzeichnis und vielleicht ein paar andere
Dateien unter Revisionskontrolle zu halten.
Die Aufgabe, die Quelle aus dem Depot zu exportieren und ihr die Quelle der
Ursprungsautoren vor dem Bauen hinzuzufügen, wird nach kurzer Zeit
lästig. Die svn-buildpackage-Werkzeuge automatisieren
aber die meiste Arbeit für Sie, indem sie in den
mergeWithUpstream-Modus umschalten, falls ein
spezieller Schalter entdeckt wird: die Subversion-Eigenschaft
mergeWithUpstream des Verzeichnisses
debian
. svn-buildpackage wird den
Hauptzweig (Trunk) mit der Quelle der Ursprungsautoren während des Bauens
zusammenführen und svn-upgrade wird in diesem Fall nur
die geänderten Dateien aktualisieren.
Um diese Funktionalität während des Imports des Quellpakets zu Beginn zu
aktivieren, fügen Sie einfach dem svn-inject-Aufruf den
Schalter -o
hinzu. Dann wird es die Quelle für den
mergeWithUpstream-Modus vorbereiten. Dies vermindert
den Satz von Dateien auf die, die für Debian verändert wurden und setzt die
Eigenschaft mergeWithUpstream.
Aber was ist, wenn Sie sich entscheiden in den mergeWithUpstream-Modus zu
wechseln, nachdem das Paket eingespeist wurde? Um dies zu erreichen, checken
Sie das ganze Depot aus, entfernen die unveränderten Dateien im Debian-Paket
sowohl aus der Quelle der Ursprungsautoren als auch aus dem Debian-Zweig
(svn rm) und setzen Sie die Eigenschaft
mergeWithUpstream im Verzeichnis
trunk
auf debian
mit:
svn propset mergeWithUpstream 1 debian
Falls Sie sich tatsächlich entscheiden, die Benutzung des mergeWithUpstream-Modus zu beenden, heben Sie die Eigenschaft mergeWithUpstream wie folgt auf:
svn propdel mergeWithUpstream debian/
Falls Sie nicht die Ursprungsquellen all Ihrer Pakete im Depot speichern
wollen, können Sie den Schalter --no-branches
an
svn-inject übergeben. Das hindert
svn-inject daran, ein
branches
-Unterverzeichnis zu erstellen.
svn-buildpackage kann Pakete im Format 3.0 bauen,
einschließlich der Benutzung von
../tarballs/foo_1.2.3-1.orig.tar.bz2
im
mergeWithUpstream-Modus. Stellen Sie sicher, dass
debian/source/format
existiert und der lokalen
Arbeitskopie von Subversion hinzugefügt wurde.
Falls debian/source/format
existiert und 3.0
* enthält, prüft svn-buildpackage ob ein
.orig.tar.bz2
im Verzeichnis
tarballs
liegt und benutzt dies für das nachfolgende
Bauen.
Beispiel 3.2. Quellformate mit dpkg-source prüfen
dpkg-source --print-format
erfordert
eine kleine Hilfe, um die üblichen mit Subversion verwendeten Layouts zu
verstehen. Der Befehl benötigt zwei Verzeichnisse – das aktuelle
Arbeitsverzeichnis wird benutzt, um den Original-Tarball zu finden und das
angegebene Verzeichnis wird benutzt, um
./debian/changelog
aufzuspüren. Wechseln Sie in das
Verzeichnis, das den Tarball enthält, bevor Sie
dpkg-source --print-format
ausführen:
$ svn mkdir debian/source $ echo "3.0 (quilt)" > debian/source/format $ svn add debian/source/format $ pushd ../tarballs/ $ dpkg-source --print-format ../trunk/ 3.0 (quilt) $ popd
Wenn 3.0 (quilt)
und mergeWithUpstream
benutzt werden, verwenden Sie zum Entpacken der Ursprungsquelle
svn-do und bearbeiten oder reparieren Sie die für den
ersten Patch nötigen Dateien, Dann nehmen Sie
dpkg-source, um Ihre Patches vorzubereiten:
Beispiel 3.3. dpkg-source die Patches für 3.0 (quilt)
vorbereiten lassen
Benutzen Sie nun einen zweckdienlichen Namen für den Patch und ändern Sie
diesen Namen in der Datei series
, beenden Sie die
svn-do-Unter-Shell für die Ergebnisse, die zurück nach
trunk
kopiert werden. Wiederholen Sie dies für
nachfolgende Patches.