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
Par défaut, l'évolution d'un produit au travers de l'historique de ses versions est un phénomène linéaire :
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
Ces deux fonctionnements déterminent ce que l'on appelle en anglais
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 :