Si vous avez suivi les exemples des chapitres précédents jusqu'ici, vous devriez avoir :
Votre première archive
qui est également votre archive par défaut :
% tla my-default-archive
lord@emf.net--2003-example
% tla whereis-archive lord@emf.net--2003-example
/usr/lord/examples/{archives}/2003-example
Deux révisions du projet hello-world
% tla revisions hello-world--mainline--0.1 base-0 patch-1
Dans ce chapitre, vous apprendrez comment récupérer les révisions d'une archive.
Vous devriez également avoir une arborescence en plus. Si c'est le cas, débarrassons-nous en :
% cd ~/wd % ls hello-world % rm -rf hello-world
Supposons maintenant que vous vouliez récupérer les derniers sources du projet hello-world. Pour cela, vous utiliserez la commande get :
% tla get hello-world--mainline--0.1 hello-world
[...]
% ls
hello-world
% ls hello-world
hw.c main.c {arch}
Supposons que nous voulions récupérer une version antérieure du projet hello-world.
Notez que dans l'exemple précédent, nous avons simplement demandé une version particulière du projet :
% tla get hello-world--mainline--0.1 hello-world
^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^^^^^^
| | | |
| | | target directory
| | |
| | |
| | version number
| |
| branch name
|
category name
Nous pouvons récupérer une version antérieure en spécifiant son niveau de patch explicitement :
% tla get hello-world--mainline--0.1--base-0 hello-world-0
^^^^^^^^^^^ ^^^^^^^^ ^^^ ^^^^^^ ^^^^^^^^^^^^^
| | | | |
| | | | target directory
| | | |
| | | patch level name
| | |
| | version number
| |
| branch name
|
category name
% ls
hello-world hello-world-0
% ls hello-world-0
hw.c main.c {arch}
Vous pouvez voir les modifications effectuées entre base-0 et patch-1 avec, par exemple, diff -r :
% diff -r hello-world-0 hello-world
diff -r hello-world-0/hw.c hello-world/hw.c
7c7
< (void)printf ("hello warld");
---
> (void)printf ("hello world\n");
[...]
Récupérer la révision base-0 est facile. Comme on s'en souvient, la révision base-0 est stockée dans un fichier tar compressé contenant l'arborescence complète (voir « Comment ça marche ? -- que fait import »). Quand vous demandez la récupération base-0, la commande get extrait simplement l'arborescence du fichier tar.
Récupérer la révision patch-1 se déroule en deux étapes. Souvenez-vous que patch-1 est stocké comme un changeset qui décrit les différences entre base-0 et patch-1 (voir « Comment ça marche ? -- enregistrer une nouvelle révision »). Néanmoins, get procède en récupérant la révision base-0, et ensuite récupère le changeset patch-1, puis utilise ce changeset pour modifier l'arborescence base-0 qui devient alors l'arborescence patch-1. En interne, get utilise la commande tla dopatch pour appliquer le changeset. Mais si vous êtes familier avec les patchsets diff/patch, vous pouvez considérer dopatch comme un patch on steroids.
Supposons qu'au lieu d'archiver simplement un changement vous en ayez archivé plusieurs : pas seulement la révision patch-1, mais patch-2, patch-3 et ainsi de suite. En l'occurrence, get va appliquer chaque changeset dans l'ordre pour créer la révision demandée.
Note
En fait, get est un petit peu plus compliqué que ce qui est décrit ici. D'une part, certaines optimisations peuvent éviter à get d'appliquer une longue liste de changesets. D'autre part, il peut y avoir des révisions créées par tag au lieu de commit, pour lesquelles différentes règles s'appliquent. Vous en apprendrez plus sur ces exceptions dans les prochains chapitres.Version du 04/06/2004 12h09 : wilk@flibuste.net--libre docs-tla--fr--1.0 patch-100 ... base-0