logo chat

Contact/Email

printImpression

Valid XHTML 1.0!

william dodé

Traduction du tutoriel Arch de Thomas Lord

Cueillette de changements ( cherrypicking )

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