Structures de dépôt classiques

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