Gestion des versions

La gestion des versions est un terme désignant toute une catégorie d'outils utilisés pour simplifier à la fois la mutualisation de code source par des équipes de développements distribuées et la gestion de l’historique ou de versions dérivées des fichiers de sources.

Les systèmes de gestion de versions s'appuient sur un principe d'entrepôt de code source accessible sur le réseau et de copies locales. Un entrepôt définit un répertoire principal (le trunk) et des dérivations (des branches). Lorsqu'un développeur veut participer à un projet, il télécharge et stocke des copies locales des fichiers de l’entrepôt. Une fois modifiés, ces fichiers sont reversés à l'entrepôt. Leurs mise à jour peut être accompagnée d'une description s'inscrivant dans un journal de suivi des versions (système de log).

Les systèmes de gestion de version cherchent à encadrer le mieux possible les conflits entre versions (modifications concurrentes de deux développeurs) en proposant le plus souvent un système de marquage des version locales conflictuelles et en mobilisant des algorithmes de différentiels pour assister un développeur dans la résolution de son conflit local. Il existe deux paradigmes d'outils : les systèmes centralisés et les systèmes distribués.