Jusqu'à présent nous avons appris à coordonner, d'une manière asynchrone, des projets basés sur des branches élémentaires issues d'une seule branche principale. (voir « Branches élémentaires -- Gérer les changements privés » et « Développement multi-branche -- La coopération sous forme de fusion en étoile »)
Dans ce chapitre, nous évoquerons sommairement une troisième forme de branche utile quand le projet est constitué de multiples branches ( « fork ») de même niveau.
Supposons, d'une manière abstraite, que la branche principale d'Alice et Bob ait pris de l'ampleur :
mainline -------- base-0 patch-1 .... patch-23 patch-24 patch-25 ... patch-42
À un moment donné, peut-être à cause de controverse dans les choix fait par la branche mainline, un nouveau développeur, Derick, déclare une scission (« fork ») et démarre sa propre branche :
mainline derick -------- ------ base-0 ------> base-0 patch-1 ' .... ' patch-23 ----' patch-24 patch-25 ... patch-42
On sait déjà que Derick peut utiliser update ou replay pour rester à jour avec la branche principale, mais s'il ne veut pas ? Comment faire si Derick veut les changements du patch-25 et patch-42, mais pas les autres patchs postérieurs au patch-23 de mainline ?
Derick peut appliquer des changements spécifiques de mainline en spécifiant la révision exacte qu'il souhaite, plutôt que de spécifier une version :
% cd ~/wd
% tla get hello-world--derick--0.1 derick
% cd derick
% tla replay -A lord@emf.net--2003-example \
hello-world--mainline--0.1--patch-23
% tla replay -A lord@emf.net--2003-example \
hello-world--mainline--0.1--patch-42
% tla missing -A lord@emf.net--2003-example \
hello-world--mainline--0.1
patch-24
patch-25
...
patch-41
% tla logs -A lord@emf.net--2003-example \
hello-world--mainline--0.1
base-0
patch-1
...
patch-22
patch-23
patch-42
La « cueillette » de changements de cette manière n'est pas nécessairement facile ou même pratique. Cela dépend, par exemple, si les changesets de mainline sont « propres ». (voir « Bien utiliser les commit -- L'idée d'un changeset « propre » »)
Néanmoins, pour certains projets, ceux caractérisés par de nombreuses scissions, cette technique peut être utile.
Note
Plusieurs révisions peuvent être ré-appliquées avec une seule commande, simplement en les indiquant toutes sur la même ligne de commande. La commande replay a également une option --list qui peut être utile pour en cueillir plusieurs à la fois. Si vous ré-appliquez souvent une série de révision, vous devriez regarder l'option --list dans tla replay --help.Version du 18/09/2004 21h14 : wilk@flibuste.net--libre docs-tla--fr--1.0 patch-102 ... base-0