Branche (gestion de configuration)

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Branche.

En gestion de configuration, une branche est une dérivation dans l'histoire de l'évolution des éléments de configuration. On parle donc de «branche de version».

Une branche de version correspond à un axe d'évolution de versions. Elle est rattachée à une branche source et peut découler sur plusieurs sous-branches.

L'évolution des versions se fait de façon linéaire au sein d'une même branche ; c’est-à-dire que les versions se suivent chronologiquement. L'apport des branches offre la possibilité d'avoir des évolutions de versions en parallèle.

Par exemple, le logiciel « Toto » a subi plusieurs évolutions depuis sa première version. À partir de la version 2.1, ses concepteurs décident de publier une version et de continuer à ajouter des fonctionnalités jusqu'à atteindre la version 3.0, qui changera fondamentalement le logiciel. Peu de temps après que cette dernière version soit sortie, ils sont amenés à devoir corriger des bugs dans la version 2.1 ; il est alors nécessaire de créer une nouvelle branche.

1.0 -- 1.1 -- 1.2 -- 1.3 -- 1.4 -- 2.0 -- 2.1 -- 2.2 -- 2.3 -- 3.0
                                            \
                                             \ -- 2.1.1 -- 2.1.2 -- 2.1.3

Sommaire

[modifier] Modèles de branches

Modèle de branche par objectif
Modèle de branche par objectif

Par défaut, l'évolution d'un produit au travers de l'historique de ses versions est un phénomène linéaire :

  • le développeur A apporte ses modifications sur le produit,
  • B ajoute ses fonctionnalités,
  • C corrige le code de A
  • etc.

On parle alors de Mainline.

Cependant, au cours de l'évolution d'un logiciel, il se peut que cette MainLine doive à la fois suivre son cours, mais aussi répondre à une contrainte qui va amener le produit à suivre une évolution parallèle à la MainLine. On a besoin alors de créer une branche.

L'origine de la contrainte peut être

  • externe : un des clients veut une modification qui lui est spécifique
  • ou interne : on a besoin de pouvoir continuer à développer la Mainline tout en permettant la correction de défauts sur une branche en cours de tests.

Ces deux fonctionnements déterminent ce que l'on appelle en anglais

  • le Branch by Product (branche par produit, branche de version)
  • ou le Branch by Purpose (branche par objectif)

[modifier] Fusion de branches

Cette activité consiste à combiner des modifications ou des suites de modifications (qu'elles viennent de branches différentes ou non) pour créer une nouvelle version.

On peut décliner plusieurs intérêts à la fusion :

  • la synchronisation entre plusieurs développeurs, qui travaillent habituellement séparément, donc sur des branches de version différentes
  • l'annulation d'une ancienne modification (par opposition à la toute dernière), à appliquer sur la version actuelle
  • l'import d'une modification d'une branche vers une autre.

[modifier] Voir aussi

[modifier] Articles connexes