Zusammenführen während des Bauens

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.

dpkg-source-Format-3.0-Unterstützung

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

Patches in dpkg-source-3.0-Paketen vorbereiten

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

$ dpkg-buildpackage -uc -us -S

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.