logo chat

Contact/Email

printImpression

Valid XHTML 1.0!

william dodé

Traduction du tutoriel Arch de Thomas Lord

Commencer un nouveau projet

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 ».

Nommer le nouveau projet

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

Choisir une branche pour ce projet

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 :

  1. Le besoin de publier des versions régulières du bon vieux « hello world », en apportant des corrections de bogues simples ou des modifications liées à la portabilité du programme, ou, enfin, en ajoutant de petites fonctionnalités ;
  2. le besoin de commencer à travailler sur l'interface graphique du projet « hello world », dont on suppose que la réalisation prendra une année.

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.

Choisir un numéro de version

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.

Préparer l'archive

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

À quoi bon tout cela ?

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 :

  • catégories,
  • branches,
  • versions.

(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.

Comment ça marche ? -- Créer les catégories, les branches et les versions

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