Commencer une nouvelle arborescence

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.

L'arborescence initiale

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;
}

Initialiser une arborescence

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.

Initialiser une arborescence ne change pas une archive

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.

Comment gérer une erreur avec init-tree ?

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.

Comment ça marche ? -- Initialiser une nouvelle arborescence

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