Le logiciel de contrôle de version, également connu sous le nom de système de contrôle de révision ou de contrôle de source, est utilisé pour suivre les modifications des projets de développement logiciel et permettre aux membres de l'équipe de modifier et de collaborer sur les mêmes fichiers. Le logiciel de contrôle de version permet aux développeurs de travailler simultanément sur le code et d'isoler leur propre travail grâce à ce que l'on appelle des branches. Les branches protègent les modifications de code des changements dans d'autres branches, mais elles peuvent être fusionnées ensemble si et quand le développeur est prêt. Les systèmes de contrôle de version permettent aux développeurs de suivre automatiquement leur travail, de voir un historique de toutes les modifications et de revenir à des versions antérieures d'un projet si nécessaire. Toutes les modifications de code et les branches sont conservées dans un dépôt (souvent appelé le "repo").
Les systèmes de contrôle de version sont utilisés par les équipes de développement logiciel pour rationaliser le processus de développement, gérer le code pour plusieurs projets et maintenir un historique des modifications de code. Lors du choix d'un logiciel de contrôle de version, les utilisateurs ont souvent besoin d'une solution d'hébergement de contrôle de version pour héberger leur dépôt principal où les développeurs valident leurs modifications de code. Les développeurs utilisent souvent des clients de contrôle de version pour gérer la fonctionnalité de leurs systèmes de contrôle de version via une interface utilisateur graphique (GUI). Les systèmes de contrôle de version s'intègrent à une variété d'outils de développement logiciel, y compris les IDE, les logiciels d'automatisation de construction et les fournisseurs de PaaS.
Pour être inclus dans la catégorie des logiciels de contrôle de version, un produit doit :
Fournir un mécanisme permettant aux développeurs de suivre les modifications de code
Permettre aux développeurs de voir un historique des modifications
Permettre aux développeurs de travailler sur les mêmes fichiers de code en même temps
Permettre aux développeurs d'isoler leur code grâce au branchement
Fusionner le code de différentes branches sur commande
Montrer aux développeurs les conflits lors des fusions de code et leur permettre de les résoudre
Permettre aux développeurs de revenir à un état antérieur de leurs modifications