Ce chapitre et les suivants vous montreront comment installer et gérer un projet simple avec arch, en prenant l'exemple d'un programme qu'on appelera « hello world ».
La première étape consiste à choisir une catégorie générale qui servira à nommer le projet. Dans les exemples qui vont suivre, nous utiliserons le nom :
hello-world
Arch vous encourage à diviser votre travail sur un projet en « branches » séparées.
Grosso modo, les branches permettent de séparer le travail sur un projet en deux chantiers (ou plus) largement indépendants. Supposons, par exemple, que le projet « hello world » ait deux besoins :
Nous souhaitons que ces deux chantiers progressent en parallèle, mais qu'ils n'y ait pas d'interférence entre eux. Par exemple, nous ne souhaitons pas que le code de l'interface graphique soit publié avant qu'il ne soit relativement fonctionnel.
Dans cette situation, nous utilisons les « branches » : une pour les versions régulières (la branche mainline) et une autre pour l'interface graphique (la branche gui).
Il y a plusieurs autres utilisations possibles des « branches ». Nous en décrirons certaines dans le manuel. Pour le moment, nous n'avons besoin que d'une seule branche, pour les sources officielles de « hello world », que nous appelons :
hello-world--mainline ^^^^^^^^^^^ ^^^^^^^^ | | category name branch name
Notez que la catégorie et le nom de la branche sont séparés par deux tirets. En général, les noms de catégorie et de branche doivent être composés uniquement de lettres, de chiffres ou de tirets. Ils doivent commencer par une lettre mais ne doivent pas contenir deux tirets consécutifs ni se terminer par un tiret.
Pour finir, on doit choisir un numéro de version pour la version de « hello world » sur laquelle on travaille. On créera cette version dans l'archive.
Avec arch, les numéros de versions ne portent pas les noms de version d'un « snapshot » particulier ou le nom de publication de votre projet -- bien qu'ils soient liés à ce concept. Les numéros de versions correspondent au nom d'une « ligne de développement » : une séquence de changement que vous apportez alors que vous publiez une version.
Dans notre cas, on utilisera le nom :
hello-world--mainline--0.1
^^^
|
version number
Notez que les numéros de version sont toujours des entiers positifs, séparés par un point.
Maintenant que nous avons choisi le nom d'archive de notre projet, il est temps de préparer l'archive à l'utilisation de ce nom :
% tla archive-setup hello-world--mainline--0.1
Après avoir passé cette commande, on peut interroger l'archive pour voir ce qu'on a fait :
% tla categories hello-world % tla branches hello-world hello-world--mainline % tla versions hello-world--mainline hello-world--mainline--0.1
Les personnes qui débutent avec arch sont parfois échaudés par la rigidité de l'espace de nommage1. Les deux questions les plus communes à ce sujet sont :
« Pourquoi avoir des catégories, des branches et des versions ? Pourquoi ne pas simplement nommer les projets avec des chaînes de caractères arbitraires ? » La meilleure manière de répondre à ces questions est de rappeler qu'un système de contrôle de révision est un bibliothécaire. Une partie de son travail consiste à aider les utilisateurs à naviguer et à faire des recherches parmi une très grande collection de projets et de code sources. Dans le but de rendre ces recherches pratiques, arch définit un système de catalogage :
(voir l'introduction « Qu'est-ce que le contrôle de révision ? »)
| [1] | On voudra peut-être lire la définition donnée par le Grand dictionnaire terminologique pour l'expression « espace de nommage ». [ndt] |
D'une certaine manière, ce fonctionnement est analogue à celui des systèmes de catalogage utilisés dans les bibliothèques de livres, tels que la classification décimale Dewey. C'est une catégorisation hiérarchique de tout ce qui est dans la bibliothèque. C'est le moyen de décrire de manière uniforme l'endroit où un objet donné est stocké, et cela facilite sa recherche en suggérant des liens entre les différents articles. Par exemple, une branche est probablement liée aux autre branches dans un même projet. Une version avec un numéro de version plus grand contient probablement un travail plus récent qu'une autre dans la même branche avec un numéro de version plus bas.
Que fait la commande archive-setup ? C'est assez simple : elle crée de nouveaux répertoires dans votre archive :
% tla whereis-archive lord@emf.net--2003-example
/home/lord/{archives}/2003-example
% cd `tla whereis-archive lord@emf.net--2003-example`
Les catégories sont des répertoires de haut niveau :
% ls =meta-info hello-world
Les branches sont au niveau suivant :
% ls hello-world hello-world--mainline
Les versions viennent au troisième niveau...
% ls hello-world/hello-world--mainline hello-world--mainline--0.1
... et sont elles-mêmes des répertoires :
% ls hello-world/hello-world--mainline/hello-world--mainline--0.1/ +revision-lock +version-lock
Note
Les fichiers de verrouillage (c'est-à-dire +revision-lock) sont utilisés de manière interne par arch. Lorsque de nouvelles informations sont ajoutées à une archive, arch ne fait pas que lancer mkdir. Il modifie les archives afin qu'elles restent dans un état toujours cohérent, même si des commandes sont passées simultanément, ou qu'une commande soit interrompue au cours de son exécution.Version du 28/05/2004 11h55 : wilk@flibuste.net--libre docs-tla--fr--1.0 patch-97 ... base-0