Projets multi-arborescence et gestion de configuration

Vous pouvez définir des « méta-projets » composés de plusieurs projets traités séparément par arch. Cela permet de diviser un grand projet en plusieurs petits, plus faciles à gérer, chacun d'eux peut être développé indépendamment des autres, et chacun d'eux peut faire partie d'un ou plusieurs méta-projets.

Cela s'accomplit en écrivant des « spécifs de config », qui définissent le contenu d'un méta-projet et comment ils doivent être organisés dans l'arborescence.

Par exemple, arch lui-même est un méta-projet. L'arborescence contient :

dists/
  dists/src/
    dists/src/arch/
    dists/src/file-utils/
    dists/src/ftp-utils/
    dists/src/hackerlab/
    dists/src/shell-utils/

Chacun de ces répertoires est la racine de l'arborescence d'un projet (qui contient un sous-répertoire nommé « {arch} »).

Le répertoire le plus haut, dist contient également un sous-répertoire nommé configs. Dans ce sous-répertoire se trouve les fichiers de configuration du méta-projet. Par exemple :

dists/
  dists/configs/
    dists/configs/regexps.com/  # Tom's configuration files
      dists/configs/regexps.com/devo.arch
      dists/configs/regexps.com/release-template.arch

Ci-dessous, le contenu de devo.arch:

# 
# Check out an arch distribution from the devo branches.  
# Latest revisions.
#

./src                   lord@regexps.com--2002/package-framework--devo
./src/arch              lord@regexps.com--2002/arch--devo
./src/file-utils        lord@regexps.com--2002/file-utils--devo
./src/ftp-utils         lord@regexps.com--2002/ftp-utils--devo
./src/hackerlab         lord@regexps.com--2002/hackerlab--devo
./src/shell-utils       lord@regexps.com--2002/shell-utils--devo
./src/text-utils        lord@regexps.com--2002/text-utils--devo

Chaque ligne (ni vide, ni commentaire) est au format :

LOCATION             CONTENTS

ce qui signifie, pour créer le méta-projet, récupère la révision indiquée par CONTENTS et installe-la dans LOCATION. La zone CONTENTS peut être une branche (signifiant, prendre la dernière révision de la dernière version de cette branche), une version (signifiant, prendre la dernière révision de cette version), ou le nom d'une révision (signifiant cette révision, exactement).

Pour récupérer une arborescence de arch complète, je récupère dists à partir de devo, puis j'utilise build-config:

% tla get dists--devo dists
[....]

% cd dists

% tla build-config regexps.com/dists.devo
[....]

Une fois que vous avez l'arborescence d'un méta-projet, voici quelques commandes utiles :

cat-config : affiche les informations de la configuration d'un
             projet-multiple

Cette commande peut être utile pour générer une liste de sous-projets sur lesquels on souhaite réitérer une commande :

% tla cat-config CFGNAME | awk '{print $1}' | xargs ...

De plus, l'option --snap peut être utilisée pour la création d'une configuration qui nomme les sous-projets par leur version plutôt que par leur révision. Elle examine l'arborescence du projet pour voir quelles révisions sont actuellement installées dans chaque LOCATIONs. Ensuite elle écrit une nouvelle configuration qui spécifie ces REVISIONS précisément. C'est utile, par exemple, pour enregistrer les versions spécifiques que vous êtes prêt à utiliser pour une distribution.

Version du 18/09/2004 21h14 : wilk@flibuste.net--libre   docs-tla--fr--1.0     patch-102 ... base-0