Dans de nombreux cas, il est utile d'avoir une bibliothèque contenant l'arborescence d'un grand nombre de révisions -- par exemple, toutes les révisions d'une version particulière. Pour être pratique, cependant, une telle bibliothèque doit être représentée d'une manière efficace.
Les liens Unix sont une solution naturelle pour stocker ce genre de bibliothèque. Chaque révision successive d'une série est une copie de la précédente, mais dont les fichiers non modifiés sont partagés par des liens physiques (hard-link).
Arch fournit des commandes pour aider à construire, maintenir et explorer de telles bibliothèques.
Comme effet de bord sympathique, le traitement de plusieurs commandes arch est accéléré si les révisions dont vous avez besoin se trouvent dans votre bibliothèque de révisions. Vous pourrez lire d'autres informations à ce propos dans le chapitre suivant.
Pour démarrer une nouvelle bibliothèque, commencez par créer un nouveau répertoire (DIR) et enregistrer son emplacement :
% tla my-revision-library DIR
Vous pouvez vérifier l'emplacement de votre bibliothèque avec :
% tla my-revision-library
ou effacer son inscription :
% tla my-revision-library -d DIR
Notez que vous pouvez avoir plusieurs bibliothèques de révisions : en fait, vous avez une liste des chemins (path) d'accès de toutes vos bibliothèques.
Une bibliothèque de révision contient des sous-répertoires de la forme :
ARCHIVE-NAME/CATEGORY/BRANCH/VERSION/REVISION/
Chaque répertoire REVISION contient les sources complets d'une révision particulière, ainsi que quelques sous-répertoires et fichiers :
REVISION/,,patch-set/
Le patch-set qui a créé cette révision à partir de son
ascendant (sauf s'il s'agit d'une révision de base)
Même si les permissions des fichiers dans la bibliothèque de révision sont déterminées par celles du patch-set, vous ne devez jamais modifier les fichiers d'une bibliothèque de révision. En faisant cela vous pourriez rencontrer de sérieux problèmes avec certaines commandes de arch.
Vous pouvez ajouter une révision donnée à votre bibliothèque avec :
% tla library-add REVISION
library-add ne va pas simplement ajouter REVISION à votre bibliothèque, mais également toutes les révisions précédentes (récursivement) de la version de REVISION.
Si vous voulez ajouter seulement REVISION et aucune autre, utilisez l'option --sparse :
% tla library-add --sparse REVISION
Pour enlever une révision particulière d'une bibliothèque, utilisez :
% tla library-remove REVISION
Soyez conscient de quelques limitations dans la version actuelle de arch : supposons que vous ayez ajouté trois révisions successives, A, B et C. Et vous enlevez B, puis remettez B. Maintenant il y a des chances pour que le partage de fichier entre B et C ne soit pas optimal, la bibliothèque sera plus grosse que nécessaire. (Vous pouvez arrangez ça en enlevant et remettant C).
La commande library-archives affiche toutes les archives enregistrées dans la bibliothèque :
% tla library-archives ARCHIVE-NAME ARCHIVE-NAME ...
De la même manière, vous pouvez afficher les catégories, branches, versions et révisions :
% tla library-categories [ARCHIVE] % tla library-branches [ARCHIVE/CATEGORY] % tla library-versions [ARCHIVE/BRANCH] % tla library-revisions [ARCHIVE/VERSION]
Vous pouvez trouver un fichier individuel dans une bibliothèque avec :
% tla library-file FILE [REVISION] PATH
ou obtenir son contenu avec :
% tla cat-library-file FILE [REVISION] ...file contents...
Ces deux commandes acceptent les options --id et --this. Avec --id, l'argument FILE est interprété comme un identifiant d'inventaire (inventory id), et le fichier ayant cet identifiant est trouvé.
Avec --this, FILE est interprété comme un fichier relatif au répertoire en cours, qui devrait faire parti de l'arborescence d'un projet. L'identifiant d'inventaire de ce fichier est retrouvé et le fichier correspondant sera trouvé dans REVISION.
% tla touched-files-prereqs REVISION
Cette commande examine le patch-set pour REVISION et tous les patch-sets précédents de la même version (il effectue les recherches dans votre bibliothèque plutôt que dans l'archive). Il affiche la liste des patchs qui recouvrent un ensemble de fichiers et répertoires -- en d'autres termes, il vous indique quels patchs peuvent être appliqués indépendamment des autres. Cette commande a une option pour ne pas tenir compte de fichiers ayant un certain schéma (ex. "=README" ou "ChangeLog"). Il a une option pour exclure de l'affichage la liste des patchs qui ont déjà été appliqués à un projet donné. Il a une option pour afficher les fichiers qui sont recouverts.
Version du 31/05/2004 21h20 : wilk@flibuste.net--libre docs-tla--fr--1.0 patch-99 ... base-0