Après avoir suivi les exemples des chapitres précédents, on devrait avoir une nouvelle archive et un nouveau projet « hello-world » dans cette archive.
Dans ce chapitre nous étudierons les différentes étapes de la préparation d'une arborescence afin qu'elle soit intégrée à ce projet.
Afin de fournir des exemples concrets, supposons que nous ayons une version initiale de « hello-world » :
% cd ~/wd
% ls
hello-world
% cd hello-world
% ls
hw.c main.c
% cat hw.c
#include <stdio.h>
void
hello_world (void)
{
(void)printf ("hello warld");
}
% cat main.c
extern void hello_world (void);
int
main (int argc, char * argv[])
{
hello_world ();
return 0;
}
La première étape pour préparer une arborescence de code source ordinaire est de la convertir en « arborescence de projet ».
% cd ~/wd/hello-world
% tla init-tree hello-world--mainline--0.1
% ls
hw.c main.c {arch}
Notez que nous avons indiqué à init-tree le nom de la version de l'archive dans laquelle nous travaillerons. init-tree a créé un sous-répertoire à la racine de l'arborescence ({arch}).
Le sous-répertoire {arch} indique qu'il est la racine d'une arborescence de projet :
% tla tree-root /usr/lord/wd/hello-world
tla sait pour quelle version de l'archive est cette arborescence :
% tla tree-version lord@emf.net--2003-example/hello-world--mainline--0.1
Enfin, arch a créé quelque chose appelé patch-log pour la version passée à init-tree :
% tla log-versions lord@emf.net--2003-example/hello-world--mainline--0.1
Nous expliquerons ce que sont les « patch logs » dans les chapitres suivants.
Jusqu'à présent, nous avons seulement déclaré l'arborescence du projet en tant que source : nous n'avons pour l'instant rien stocké de nouveau dans cette archive. Nous y viendrons. Mais avant de faire cela, il y a un sujet important qui doit être abordé : les inventaires de sources (source inventories). Nous verrons cela dans le chapitre suivant.
Supposons que dans l'exemple ci-dessus, nous ayons fait une erreur de frappe :
% tla init-tree hello-world--mainlin--0.1
Une solution « brutale » consisterait à simplement effacer le sous-répertoire {arch} et recommencer. Cependant, à terme, cette solution n'est pas souhaitable : le sous-répertoire {arch} peut contenir des informations que vous ne souhaitez pas perdre. Nous profiterons donc de cette occasion pour introduire quelques commandes avancées.
L'erreur dans la commande init-tree pose deux problèmes. Le résultat des deux commandes suivantes ne donne pas ce à quoi nous nous attendons :
% tla tree-version lord@emf.net--2003-example/hello-world--mainlin--0.1 % tla log-versions lord@emf.net--2003-example/hello-world--mainlin--0.1
On peut changer la tree-version d'une arborescence à n'importe quel moment :
% tla set-tree-version hello-world--mainline--0.1 % tla tree-version lord@emf.net--2003-example/hello-world--mainline--0.1
Gérer les « patch logs » est un peu plus compliqué. Nous devons ajouter les logs que nous voulons...
% tla add-log-version hello-world--mainline--0.1 % tla log-versions lord@emf.net--2003-example/hello-world--mainlin--0.1 lord@emf.net--2003-example/hello-world--mainline--0.1
... et effacer ceux que ne souhaitons pas conserver :
% tla remove-log-version hello-world--mainlin--0.1 % tla log-versions lord@emf.net--2003-example/hello-world--mainline--0.1
Attention!
remove-log-version est une commande dangereuse. Elle effacera les « patch logs » dont vous pourriez avoir besoin. On devrait utiliser remove-log-version en étant certain, comme nous l'étions dans le cas ci-dessus, que ce qui est supprimé est ce que nous ne souhaitons pas conserver.init-tree a créé le sous-répertoire {arch} à la racine de l'arborescence. Qu'y a-t-il dedans ?
% ls {arch}
++default-version =tagging-method hello-world
% cat {arch}/++default-version
lord@emf.net--2003-example/hello-world--mainline--0.1
% cat {arch}/=tagging-method
[... long output ...]
{arch}/hello-world est la racine d'une arborescence assez profonde. Les « patch logs » sont stockés dans cette arborescence.
{arch}/=tagging-method est un fichier de configuration que vous pouvez utiliser pour personnaliser la procédure de nommage (naming conventions) qui s'applique à cette arborescence. Cela est expliqué dans un chapitre suivant (voir « Personnaliser les procédures de nommage de l'inventaire »).
Note
On ne devrait évidemment pas éditer le contenu de {arch} à la main.Version du 31/05/2004 21h18 : wilk@flibuste.net--libre docs-tla--fr--1.0 patch-99 ... base-0