Une fonctionnalité particulière de svn-buildpackage est
le mode mergeWithUpstream. De nombreux projets ne
préfèrent pas garder l'intégralité des sources amont sous gestionnaire de
version, à cause de l'espace disque nécessaire ou du temps de traitement par
exemple. Parfois, il est logique de ne garder que le répertoire
debian/
et peut-être quelques autres fichiers sous
gestionnaire de version.
L'exportation des sources du dépôt et l'ajout aux sources amont avant la
construction deviennent agaçants au bout d'un moment. Les outils
svn-buildpackage automatisent la plupart de ces
opérations en basculant vers le mode mergeWithUpstream
si un indicateur particulier est détecté : la propriété (Subversion)
mergeWithUpstream du répertoire
debian
. svn-buildpackage fusionnera
le tronc avec le code source amont au moment de la construction et
svn-upgrade ne mettra à niveau que les fichiers modifiés
dans ce cas.
Pour activer cette fonctionnalité lors de l'importation initiale du paquet
source, il suffit d'ajouter l'option -o
lors de l'appel à
svn-inject pour préparer les sources dans le mode
mergeWithUpstream. Le jeu de fichiers est alors réduit
à ceux modifiés pour Debian et la propriété
mergeWithUpstream est configurée.
Mais qu'en est-il de basculer en mode mergeWithUpstream
après l'injection du paquet ? Pour ce faire, extraire le dépôt complet,
enlever les fichiers non modifiés dans le paquet Debian à la fois dans les
sources amont et dans la branche Debian (svn rm) et
configurer la propriété mergeWithUpstream sur
debian
dans le répertoire trunk
avec :
svn propset mergeWithUpstream 1 debian
Pour finalement arrêter d'utiliser le mode mergeWithUpstream, enlever la propriété mergeWithUpstream ainsi :
svn propdel mergeWithUpstream debian/
Pour éviter de conserver les sources amont de tous les paquets du dépôt, il
suffit d'ajouter l'option --no-branches
lors de l'appel à
svn-inject, pour l'empêcher de créer un sous-répertoire
branches
.
svn-buildpackage peut construire des paquets au format
source 3.0, même en utilisant
../tarballs/truc_1.2.3-1.orig.tar.bz2
en mode
mergeWithUpstream. Vérifier que le fichier
debian/source/format
existe et a été ajouté à la copie
de travail de Subversion.
Si debian/source/format
existe et contient
3.0 *, svn-buildpackage recherche un
fichier .orig.tar.bz2
dans le répertoire
tarballs
et l'utilise pour la construction suivante.
Exemple 3.2. vérifications des formats de source avec dpkg-source
dpkg-source --print-format
doit être un
peu aidé pour comprendre les structures habituellement utilisées avec
Subversion. La commande a besoin de deux répertoires : le répertoire actuel
est utilisé pour trouver l'archive amont d'origine, et le répertoire indiqué
est utilisé pour trouver ./debian/changelog
. Modifier
le répertoire contenant l'archive avant d'exécuter
dpkg-source --print-format
:
$ 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
Avec 3.0 (quilt)
et mergeWithUpstream,
svn-do doit être utilisé pour dépaqueter les sources
amont avant de simplement modifier ou d'appliquer un correctif sur les
fichiers nécessaires au premier correctif. Ensuite
dpkg-source peut préparer automatiquement les
correctifs :
Exemple 3.3. laisser dpkg-source préparer les correctifs pour
3.0 (quilt)
Il faut à ce moment choisir un nom pratique pour le correctif, ajouter ce
nom dans le fichier series
, puis sortir du
sous-interpréteur svn-do pour que les modifications
soient recopiées vers trunk
. Cette technique doit être
répétée pour chaque correctif.