logo chat

Contact/Email

printImpression

Valid XHTML 1.0!

william dodé

Traduction du tutoriel Arch de Thomas Lord

Importer la première révision

Mémo : si vous avez suivi les exemples des chapitres précédents, nous avons maintenant :

Votre identifiant arch

Dans « Faire les présentations », vous avez créé votre première archive et fait en sorte qu'elle soit celle par défaut. Dans « Commencer un nouveau projet » vous avez ajouté le projet hello-world à cette archive.

Votre arborescence initiale

Dans « Démarrer une nouvelle arborescence » vous avez commencé en initialisant les sources pour hello-world comme un projet arch et dans « Identifiants d'inventaire des sources » vous avez attribué des identifiants aux fichiers sources de ce projet.

Maintenant c'est enfin le moment d'importer les sources de hello-world dans l'archive. Cela va se dérouler en deux étapes : (1) créer un fichier de log; (2) importer les sources.

Créer le premier fichier de log

Vous êtes sur le point de créer une nouvelle « révision » de hello-world dans votre archive : un enregistrement de ce projet à un instant donné.

Lorsque vous créez une révision, la première étape consiste à créer un fichier de log pour cette révision :

% cd ~/wd/hello-world

% tla make-log
++log.hello-world--mainline--0.1--lord@emf.net--2003-example

La sortie de cette commande est le nom d'un fichier que nous devons éditer. Au départ il contient :

Summary: 
Keywords: 

Vous devriez remplir ce fichier comme vous le feriez pour un email. Ajouter une description succinte de la révision dans le champ « Summary: », et une description complète dans le corps du message. Exactement comme un email, le corps du texte doit être séparé de l'entête par une ligne vide. Lorsque c'est fait, le log doit avoir cet aspect :

Summary: initial import
Keywords: 

Ceci est l'importation initiale de « hello-world »,
l'application qui tue tout et qui propulsera votre nouvelle
boite .com au zénith du succès.

Note

Pour les fans de vi : Le nom du fichier par défaut pour les messages de log commence avec le caractère +. vi est un programme non standard dans le sens où il traite les arguments commençants par + comme des options plutôt que comme des arguments classiques. Aussi, vous devez vous assurer de bien taper le nom du fichier pour vi en commençant par ./, comme ceci :
% vi ./++log.hello-world--mainline--0.1--lord@emf.net--2003-example

ou, tout simplement :

% vi `tla make-log`

Note

Raccourci : Cette section décrit la « manière longue » pour créer le message de log de votre importation initiale. Il existe un raccourci pour vous éviter cette étape : les options -L et -s de tla import. Nous avons utilisé la manière longue mais plus tard vous devriez essayer tla import -H pour en savoir davantage sur ce racourcis.

Stocker la première révision dans l'archive

Finalement, nous pouvons demander à arch d'ajouter nos sources à l'archive :

% tla import
[....]

Note

Si vous obtenez une erreur comme « These apparent source files lack inventory ids » (il manque des identifiants d'inventaire pour des fichiers qui semblent être des sources), relisez la section « Identifiants d'inventaire des sources » et soit ajoutez chaque fichier, soit modifiez la convention de nommage.

Nous pouvons observer l'effet de bord de cette commande de plusieurs manières.

Nous pouvons demander à arch quelles révisions existent dans l'archive pour notre projet :

% tla revisions hello-world--mainline--0.1
base-0

En fait, nous pouvons obtenir plus de détails :

% tla revisions --summary --creator --date \
                  hello-world--mainline--0.1 
base-0
    2003-01-28 00:45:50 GMT
    Tom (testing) Lord <lord@emf.net>
    initial import

Qu'est-ce qui a changé dans notre arborescence ? Souvenez-vous que nous avons quelque chose appelé « patch log » :

% tla log-versions
lord@emf.net--2003-example/hello-world--mainline--0.1

Maintenant il y a un message :

% tla logs hello-world--mainline--0.1
base-0

% tla logs --summary --creator --date \
               hello-world--mainline--0.1
base-0
    2003-01-28 00:45:50 GMT
    Tom (testing) Lord <lord@emf.net>
    initial import

% tla cat-log hello-world--mainline--0.1--base-0
Revision: hello-world--mainline--0.1--base-0
Archive: lord@emf.net--2003-example
Creator: Tom (testing) Lord <lord@emf.net>
Date: Mon Jan 27 16:45:50 PST 2003
Standard-date: 2003-01-28 00:45:50 GMT
Summary: initial import
Keywords: 
New-files: ./hw.c ./main.c
New-patches: \
  lord@emf.net--2003-example/hello-world--mainline--0.1--base-0

Ceci est l'importation initiale de « hello-world »,
l'application qui tue tout et qui propulsera votre nouvelle
boite .com au succès.

Le nom des révisions importées

import a créé une nouvelle révision dans l'archive. Notez que cette révision est appelée base-0 et que nous pouvons former un nom plus complet de cette révision en le préfixant par la catégorie, la branche, et la version :

hello-world--mainline--0.1--base-0
^^^^^^^^^^^  ^^^^^^^^  ^^^  ^^^^^^
     |          |       |     |
     |          |       |    patch level name
     |          |       |
     |          |     version number
     |          |
     |     branch name
     |
 category name

Si nous y ajoutons le nom de l'archive, on obtient quelque chose appelé « nom pleinement qualifié de la révision » (fully qualified revision name), qui est un identifiant globalement unique de la révision :

lord@emf.net--2003-example/hello-world--mainline--0.1--base-0
^^^^^^^^^^^^^^^^^^^^^^^^^^
            |
      archive name

Les noms pleinement qualifiés vont être de plus en plus importants au fur et à mesure que vous étudierez les « dépôts répartis » dans les chapitres suivants.

Comment ça marche ? -- Que fait import ?

Regardons ce que import a fait au niveau de l'archive :

Allons dans le répertoire de notre version de travail

% cd ~/{archives}
% cd 2003-example/
% cd hello-world/
% cd hello-world--mainline/
% cd hello-world--mainline--0.1/
% ls
base-0

Il a créé un nouveau répertoire base-0 pour la nouvelle révision.

% cd base-0
% ls
+revision-lock
hello-world--mainline--0.1--base-0.src.tar.gz
log

Comme toujours, le fichier +revision-lock est utilisé par arch en interne pour garder l'archive dans un état cohérent dans toutes les circonstances.

Le fichier log est une copie du message de log que vous avez écrit, avec quelques entêtes supplémentaires :

% cat log
Revision: hello-world--mainline--0.1--base-0
Archive: lord@emf.net--2003-example
Creator: Tom (testing) Lord <lord@emf.net>
Date: Mon Jan 27 16:45:50 PST 2003
Standard-date: 2003-01-28 00:45:50 GMT
Summary: initial import
Keywords: 
New-files: ./hw.c ./main.c
New-patches: \
  lord@emf.net--2003-example/hello-world--mainline--0.1--base-0

Ceci est l'importation initiale de « hello-world »,
l'application qui tue tout et qui propulsera votre nouvelle
boite .com au succès.

Finalement, le fichier compressé .tar.gz est une copie de l'arborescence de votre projet :

% tar ztf hello-world--mainline--0.1--base-0.src.tar.gz
hello-world--mainline--0.1--base-0/
hello-world--mainline--0.1--base-0/hw.c
hello-world--mainline--0.1--base-0/main.c
hello-world--mainline--0.1--base-0/{arch}/
hello-world--mainline--0.1--base-0/{arch}/.arch-project-tree
hello-world--mainline--0.1--base-0/{arch}/=tagging-method
hello-world--mainline--0.1--base-0/{arch}/hello-world/
[....]

Vous devriez noter que le fichier tar n'inclut pas tous les fichiers de votre arborescence. Il contient spécifiquement les fichiers listés par :

% cd ~/wd/hello-world

% tla inventory --source --both --all
[....]

Finalement, si vous parcourez le répertoire {arch} de votre arborescence, vous verrez deux nouvelles données :

% ls
++default-version       =tagging-method
++pristine-trees        hello-world

Le répertoire ++pristine-trees contient (à une certaine profondeur) une copie de l'arborescence que vous venez d'importer. C'est une copie mise en cache utilisée par certaines commandes de arch. (À noter : dans les prochaines versions de arch, le répertoire ++pristine-trees sera remplacé par un mécanisme différent).

Si vous creusez, dans le répertoire patch-log de hello-world, vous trouverez une copie du fichier de log de la révision que vous venez de créer (avec quelques entêtes supplémentaires).

Version du 04/06/2004 12h09 : wilk@flibuste.net--libre   docs-tla--fr--1.0     patch-100 ... base-0