Il existe trois façons de conserver les paquets dans les dépôts (ou de plusieurs dépôts si vous préférez). svn-buildpackage s'attend généralement à une structure de répertoire du genre de celle décrite dans le livre « Gestion de versions avec Subversion », qui ressemble à :
Exemple 1.1. hiérarchie de répertoires
paquetA/ trunk/ branches/ branches/upstream tags/ projetB/ trunk/ branches/ branches/developerMachin tags/
packageA
plus haut peut être un paquet source
typiquement basé sur le code source amont et projectB
un paquet Debian natif avec une branche distincte créée par le développeur
Machin pour ses expérimentations personnelles. Voir la partie « Utilisation
des branches » du livre « Gestion de versions avec Subversion » pour
de plus amples précisions sur la façon d'utiliser les branches de
Subversion.
Remarquez également que les étiquettes fonctionnent assez différemment de
celles de CVS. Subversion ne maintient pas d'étiquettes magiques associées à
certains fichiers. À la place, il suit l'état du fichier et le bouge, donc
étiqueter signifie créer une copie (dans le dépôt, en occupant peu d'espace
disque) d'une certaine version du jeu de fichiers. La branche Debian du
paquet source publié est contenue dans trunk/
et
étiquetée en copiant (dupliquant) le tronc (« trunk ») vers
tags/DEBIAN-REVISION
. Le fonctionnement est identique
lors des publications amont. De plus, la dernière version amont est
dupliquée vers branches/upstream/current
. Après
quelques cycles de mises à niveau du paquet, l'arborescence de répertoires
devrait ressembler à :
Exemple 1.2. hiérarchie des répertoires de branches
$ 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 ... même chose que dans 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 ... tronc où 0.6.0-2 est en préparation ...
svn-buildpackage prend également en charge la deuxième structure suggérée dans le livre « Gestion de versions avec Subversion » (les branches fonctionnelles) mais svn-inject préfère celle documentée plus haut. svn-buildpackage et svn-upgrade devraient tous deux être capable de détecter automatiquement la structure de dépôt et l'emplacement des fichiers du paquet.
En théorie, il n'est pas nécessaire de suivre ces exemples, et les
répertoires trunk
, branches
et
tags
peuvent être placé où vous préférez. Mais
svn-buildpackage et les autres scripts ne trouveront pas
automatiquement les fichiers ce qui obligera à modifier le fichier
.svn/deb-layout
du répertoire de travail pour
configurer les chemins. Voir l'ancien résumé sur le
fonctionnement de la détection automatique et l'exemple
de configuration.
Enfin, la structure de répertoire de travail sur votre système de développement devrait ressembler à :
Exemple 1.3. configuration
dev/ # répertoire de base, sous gestionnaire de version ou pas dev/truc # répertoires troncs des différents paquets dev/machin # contenus correspondant au tronc, voir plus haut dev/tarballs # où les archives sources « orig » sont conservées, en gestion de version ou pas dev/build-area # où les paquets sont temporairement exportés et construits