logo chat

Contact/Email

printImpression

Valid XHTML 1.0!

william dodé

Traduction du tutoriel Arch de Thomas Lord

Archiver les changements

Jusqu'à présent, si vous avez suivi les exemples, nous avons créé une nouvelle archive et un projet hello-world. Dans cette archive, nous avons importé la version initiale de hello-world.

L'opération la plus courante que vous aimerez effectuer en tant que programmeur utilisant un système de contrôle de révision est d'archiver (commit) un ensemble de modifications. Dans ce chapitre, nous verrons les méthodes les plus basiques pour effectuer cela.

warld != world\n

si vous regardez le source, vous noterez une faute d'orthographe et un bogue sur le retour à la ligne :

% cat hw.c

#include <stdio.h>

void
hello_world (void)
{
  (void)printf ("hello warld");
}

C'est clair, nous voulions dire « hello world », pas « hello warld », et nous voulions probablement un retour à la ligne à la fin du message. Réparons ces bogues maintenant.

Quelques conseils gratuits sur les messages de log

Les conseils gratuits méritent d'être payés

anonyme

Voilà le plan : nous modifierons le source pour réparer les bogues. Ensuite nous demanderons à arch d'archiver les modifications nécessaires pour réparer ces bogues. Cette seconde étape va créer une nouvelle révision dans l'archive.

Comme nous l'avons noté précédement, à chaque fois que vous créez une nouvelle révision, vous devez fournir un message de log pour cette révision (voir « Créer le premier fichier de log »).

Les bogues particuliers que nous sommes en train de réparer dans notre exemple ludique sont simplistes -- mais dans une situation réelle, ils seront sûrement plus complexes. Nous avons le choix : vous pouvez soit attendre que les modifications soient effectuées pour écrire le message de log décrivant vos changements, soit écrire le message de log au fur et à mesure.

Voici le conseil gratuit : écrivez le message de log au fur et à mesure. En d'autres termes, prenez des notes en cours de travail. Au niveau des commandes tla ça signifie que vous devez démarrer le processus de correction des bogues par :

% cd ~/wd/hello-world

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

Ensuite éditez votre nouveau fichier de log pour y lire :

Summary: Réparation des bogues dans la chaine "hello world"
Keywords: 

Le « Summary » décrit ce que vous êtes censé effectuer comme nouvelles modifications. En cours de travail, vous pouvez remplir le corps du message de log.

Le cycle modification/mise à jour du log

Mettons que ces bogues soient plus complexes qu'ils ne le sont actuellement, voilà comment le travail pourrait se dérouler :

Change warld en world.

Mise à jour du message de log.

Ajoutez une note au fichier de log :

Summary: Réparation des bogues dans la chaine "hello world"
Keywords: 

Écriture correcte de "world" (et non "warld").

Ajout d'un retour à la ligne à la chaine.

Mise à jour du message de log à nouveau.

Summary: Réparation des bogues dans la chaine "hello world"
Keywords: 

Écriture correcte de "world" (et non "warld").

Ajout d'une nouvelle ligne à la chaine "hello world"

Oh mon dieu -- Qu'ai-je fait ?

Vous venez juste d'effectuer un long et difficile travail pour réparer ces bogues. Ne serait-ce pas une bonne idée que de revoir ce que vous avez fait avant de le publier ?

Pas de problème, arch est là pour ça :

% tla changes --diffs
[....]
*** patched regular files

**** ./hw.c
[....] 
     @@ -4,7 +4,7 @@
      void
      hello_world (void)
      {
     -  (void)printf ("hello warld");
     +  (void)printf ("hello world\n");
      }
[....]

Aha ! maintenant nous savons. C'est le moment d'archiver ces modifications.

Enregistrer les changements dans l'archive

Maintenant, enregistrons ces changements dans l'archive.

Si vous n'avez pas tenu compte de notre conseil gratuit (voir Quelques conseils gratuits sur les messages de log), c'est maintenant le moment de créer le message de log (astuce : tla make-log).

Pour sauvegarder vos changements dans l'archive, simplement :

% tla commit
[....]

Après ce commit, il y a une nouvelle révision dans l'archive.

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

ou, en plus détaillé :

% tla revisions --summary hello-world--mainline--0.1
base-0
    initial import
patch-1
    Réparation des bogues dans la chaine "hello world"

Notre arborescence de patch-log a également été mise à jour :

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

% tla logs --summary hello-world--mainline--0.1
base-0
    initial import
patch-1
    Réparation des bogues dans la chaine "hello world"

Comment ça marche ? -- Archiver une nouvelle révision

Que fait commit au niveau de l'archive ?

Allons dans le répertoire de la version dans laquelle nous travaillons

% cd ~/{archives}
% cd 2003-example/
% cd hello-world/
% cd hello-world--mainline/
% cd hello-world--mainline--0.1/
% ls
+version-lock   =README         base-0          patch-1

Le sous-répertoire patch-1 est nouveau :

% cd patch-1

% ls
+revision-lock
hello-world--mainline--0.1--patch-1.patches.tar.gz
log

Comme d'habitude, le fichier de log est celui que vous avez écrit, avec quelques entêtes supplémentaires :

% cat log
Revision: hello-world--mainline--0.1--patch-1
Archive: lord@emf.net--2003-example
Creator: Tom (testing) Lord <lord@emf.net>
Date: Mon Jan 27 22:26:13 PST 2003
Standard-date: 2003-01-28 06:26:13 GMT
Summary: Réparation des bogues dans la chaine "hello world"
Keywords: 
New-files: \
  {arch}/hello-world/ [....] /patch-log/patch-1
Modified-files: hw.c
New-patches: \
  lord@emf.net--2003-example/hello-world--mainline--0.1--patch-1

Écriture correcte de "world" (et pas "warld").

Ajout d'un retour à la ligne à la fin de la chaine.

Le fichier .patches.tar.gz est appelé un changeset. Il décrit les changements que vous avez effectués par les différences entre la révision base-0 et la révision patch-1. Vous en apprendrez davantage sur la nature des changesets dans les chapitres suivants. Pour l'instant, vous pouvez considérer un changeset comme un équivalent de la sortie d'un diff -r qui serait utilisé pour comparer la révision base-0 d'avant vos changements, avec l'arborescence d'après vos changements (ou, comme dirait un utilisateur de arch : un « patch set on steroids »).

Dans l'arborescence du projet :

% cd ~/wd/hello-world

La commande commit a eu deux effets. Premièrement, elle a ajouté un fichier de log dans {arch}/hello-world. Deuxièmement, elle a modifié {arch}/++pristine-trees pour contenir une copie mise en cache de la révision patch-1 à la place de la révision base-0.

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