Branche (gestion de configuration)

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

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

Modèles de branches

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 paralelle à 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)

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