Explorer le contrôle de code source et le contrôle de version

Effectué

L’utilisation de la source et du contrôle de version est une pratique DevOps fondamentale. Il s’agit également d’un prérequis pour des pratiques telles que l’intégration continue et l’infrastructure en tant que code, qui sont essentielles pour atteindre le plein potentiel devOps. L’organisation dans notre exemple de scénario doit passer en revue sa stratégie actuelle de développement de logiciels collaboratifs et passer à un modèle de contrôle de version distribué tel que Git, en particulier compte tenu de ses plans d’utilisation de GitHub pour sa gestion du cycle de vie des logiciels. Toutefois, cela nécessite une bonne compréhension des principes de version et de contrôle de code source et de leurs avantages, que nous aborderons ici.

Contrôle de code source et contrôle de version

Capture d’écran d’un système de contrôle de code source avec plusieurs fichiers et leur historique des versions.

Les termes contrôle de code source et contrôle de version sont souvent utilisés de manière interchangeable, et dans de nombreux contextes, ils font référence au même concept. En général, les deux sont associés à la pratique de la gestion des modifications apportées au code dans un environnement de développement partagé. Toutefois, vous pouvez rencontrer des scénarios plus nuanceux dans lesquels leur signification est légèrement différente. Dans ces scénarios, contrôle de code source désigne un système qui gère les modifications apportées aux fichiers de code source, tandis que contrôle de version inclut la gestion des modifications de n’importe quel type de fichier à des fins qui s’étendent au-delà du code source seul. À l’avenir, par souci de cohérence, nous utiliserons le terme contrôle de version pour représenter les référentiels de logiciels collaboratifs basés sur Git disponibles dans GitHub et Azure DevOps.

Quels sont les avantages du contrôle de version ?

Le contrôle de version effectue le suivi des modifications apportées aux fichiers dans son étendue de gestion. Cela offre un large éventail d’avantages :

  • Historique et suivi des versions: vous avez la possibilité d’examiner l’historique des modifications apportées à n’importe quel fichier, y compris la possibilité de déterminer quand chaque modification individuelle a eu lieu et quelle était leur étendue. Cela fournit également la traçabilité, généralement en associant chaque ensemble de modifications à un identificateur unique.

  • restauration et récupération: en cas d’erreur ou d’un problème, vous pouvez facilement rétablir les modifications pour récupérer la version opérationnelle connue du fichier concerné.

  • branchement et fusion: si vous devez étendre les fonctionnalités du code actuel en ajoutant une autre fonctionnalité ou en corrigeant un bogue nouvellement découvert, vous pouvez créer une branche appelée « branche », ce qui vous permet de travailler indépendamment sur la base de code existante. La nouvelle branche est initialement identique à la branche principale hébergeant le code actuel. Une fois vos modifications terminées, vous fusionnez la nouvelle branche avec la branche principale. Bien que cela puisse encore entraîner des conflits (si un autre développeur a décidé de modifier le même ensemble de fichiers en attendant via une autre branche), son étendue est limitée et elle peut généralement être facilement identifiée et résolue.

    Capture d’écran d’une stratégie de branche avec plusieurs branches, notamment les principales, les correctifs de bogues et les fonctionnalités.

  • Collaboration et développement parallèle: les dispositions de résolution des conflits complétées par la branche et la fusion facilitent l’utilisation de plusieurs développeurs sur la même base de code, ce qui augmente l’efficacité. Avec les systèmes de contrôle distribués, tels que Git, il est même possible de créer du code en mode déconnecté. La collaboration implique également de la part des pairs des révisions mutuelles des demandes de tirage (pull requests), la promotion du partage des connaissances, et la transparence.

  • Automation: le contrôle de version est un élément essentiel de l’intégration continue et des déploiements automatisés. La génération et le test automatisés peuvent être déclenchés automatiquement chaque fois qu’une nouvelle version du code est envoyée au référentiel de contrôle de version ou fusionnée avec la branche principale. Différentes versions du code peuvent être déployées dans différents environnements.