Accès rapide (Sommaire) :
Les logiciels de versioning en #Short
- Le versioning désigne l’ensemble des solutions de conservation chronologique, de gestion et de partage des fichiers d’un projet de code.
- Les deux principaux types de versionnage logiciel sont le versioning local et le versioning à distance.
- Git, Mercurial ou Subversion font partie des meilleurs outils de gestion de versions pour les équipes de développement.
Qu’est-ce que le versioning ?
Le versioning ou gestion des versions permet de caractériser l’évolution des services Web, des API, des Web API, des systèmes d’exploitation ou encore des logiciels et des applications informatiques. Le versionnage permet de conserver toutes les données liées à chaque version d’une entité logicielle donnée.
Définition et concepts clés
Le versioning est un processus informatique intelligent facilitant la gestion et la documentation des modifications apportées au code source d’un programme logiciel au fil du temps. Le versioning permet de créer et de contrôler toutes les versions d’un produit (logiciel, base de données, etc.). Il garantit la traçabilité de toutes les actions des équipes de développement.
Tout au long du cycle de vie d’un logiciel, le versioning permet de disposer d’une base technique fiable et sécurisée pour l’intégration des différentes couches d’optimisation logicielle. Pour chaque version du logiciel (prototype, alpha, bêta, release candidate, version finale), il est alors facile de savoir quelles modifications sont apportées aux fichiers du projet. On sait aussi qui a apporté ces modifications et à quel moment cela a été fait.
Plusieurs termes clés se rapportent au processus de versionnage. Les connaitre vous aidera à mieux comprendre ce fonctionnement. Les voici donc.
La version
La version d’un logiciel désigne l’ensemble des composantes techniques et informatisées d’un état fini de l’évolution d’un produit logiciel.
La révision
La révision représente une étape d’avancement d’une version, un lot d’évolutions logicielles découlant des modifications, des ajouts ou des suppressions de données qui ont été effectués.
La révision conserve toutes les fonctionnalités de la version concernée du logiciel, en leur apportant toutefois certaines améliorations.
La branche de version
Une branche de version désigne l’évolution des modifications de code source liée à la configuration logicielle d’un élément rattaché à une version donnée du logiciel.
Bon à savoir : Chaque axe d’amélioration du code d’une version peut avoir des sous-axes de modification logicielle, ce qui peut donner une multitude de branches de version pour un seul projet.
Le versioning séquentiel
L’identification numérique d’une série de versions continues d’un produit est généralement représentée par 3 numéros séparés par des points :
- On a ainsi le premier chiffre, appelé numéro majeur, utilisé pour désigner les versions finales de base.
Ce numéro évoluera successivement lorsque des modifications significatives et globales sont apportées au produit en matière d’ergonomie et de fonctionnalité. Il s’agit des changements non rétrocompatibles, des retraits de fonctionnalités obsolètes, des changements d’interfaces, etc.
- Le deuxième numéro, le numéro mineur est utilisé pour préciser que la version de base a connu des correctifs notables et un changement mineur de fonctionnalités. Ces changements sont rétrocompatibles.
- Le troisième numéro, encore appelé numéro de révision, indique que des bugs mineurs ont été corrigés sur la version améliorée du produit. Il s’agit généralement des corrections des anomalies rétrocompatibles et des failles de sécurité.
On peut ainsi passer de LOGICIEL 1 à LOGICIEL 1.3 puis finalement LOGICIEL 1.3.8 avant de développer éventuellement LOGICIEL 2. Tout dépend du niveau de précision que les équipes de développement veulent apporter dans l’identification numérique du produit au fil des modifications apportées.
Certains produits peuvent ainsi avoir jusqu’à 6 numéros dans leur identifiant numérique de versions.
Le versioning séquentiel permet aux développeurs de vite se repérer au niveau des milliers de lignes de code quand il y a plusieurs fonctionnalités du produit à améliorer.
Le versioning concurrent
Ce type de versionnage est utilisé par les développeurs open source pour gérer efficacement le référentiel du code source.
Ici, le logiciel de versioning n’enregistre pas la version de chaque fichier. Il stocke plutôt dans le référentiel, les différences entre les versions pour chaque fichier du projet. La gestion concurrente des versions facilite l’isolation des modifications du code sur des branches sans affecter les fonctionnalités non rétrocompatibles.
Ce type de versionnage favorise le travail simultané des développeurs tout en garantissant la sécurité et la cohérence des fichiers du projet.
Pourquoi le versioning est-il important ?
Le versionnage est surtout important pour les entreprises qui développent et commercialisent des logiciels. Chaque projet de code doit absolument avoir un processus de versionnage efficace et adapté afin de respecter le cahier de charges.
La gestion du code source
Grâce à un logiciel de versioning, il est possible de vérifier l’historique des modifications de code et de situer les responsabilités de chaque intervenant concernant l’ajout de code. Les données enregistrées ne peuvent pas être altérées, car la sauvegarde se fait en utilisant des dispositifs de sécurité de haut niveau.
Chaque version de code est commentée et datée de manière chronologique, ce qui permet de faire rapidement une rétrospective constructive sur le projet de code. Pour alimenter le nouveau code, des développeurs peuvent ainsi rapidement s’inspirer des éléments d’une version antérieure du logiciel.
L’historisation des données du produit facilite aussi la comparaison de plusieurs versions du code pour déceler des erreurs éventuelles. On peut alors effectuer rapidement des corrections au niveau du code source. Par exemple, il est possible que l’implémentation d’un nouveau patch de correction entraine des bugs dans la fonctionnalité d’un logiciel déjà en service. Si le nouveau code est bon, il faut analyser le code de version précédente pour rechercher des sources d’incompatibilité à l’origine d’erreurs d’exécution.
Sans le versioning, les données liées au développement de cette version précédente seraient inaccessibles en temps réel. Cela rendrait très difficile, voire presque impossible, la correction du problème au niveau du code source. Cette gestion du code source se fait on site, mais aussi sur le cloud.
Dans le cadre de la configuration logicielle, le versioning permet de standardiser le stockage de différentes versions de fichiers.
La collaboration sur un projet de code
Grâce au versionnage, il est possible d’attribuer à chaque équipe des droits d’accès partiel ou total sur les fichiers du projet de code. Tout dépend évidemment du degré de responsabilité de chaque intervenant et de la sensibilité des fichiers à traiter et à partager.
Les actions qui sont simplifiées dans le cadre du développement sont alors nombreuses :
- L’identification des branches de version et des relations entre ces branches
- L’identification rapide des différences et des critères d’indépendance entre les versions du produit
- L’application des commandes (importation, extraction, validation, mise à jour, suppression, etc.) sur un objet, une bibliothèque ou un fichier système
- La rédaction de commentaires directement dans le code source
- L’approbation de la revue du code et la validation des modifications sur le projet
- La fusion des différentes versions de fichiers
Un logiciel de versioning permet d’anticiper et d’éviter les conflits de travail en simultané. Si deux développeurs travaillent simultanément sur la même ligne de code, chaque intervenant est averti en temps réel de l’action de l’autre. Il faut donc que les modifications de code soient complémentaires. Autrement, les travaux de développement issus d’une collaboration simultanée sur le même code pourraient se parasiter et crasher une grande partie du programme.
Les systèmes de versionnage permettent aux développeurs de réaliser des tests rapides pour une livraison continue du produit développé. Les flux de travail pour la modification du code source sont alors rationalisés et l’équipe de développement peut avancer rapidement sur le projet.
Les différents types de versioning
Les exigences pour chaque projet de développement informatique sont uniques. Mais il existe plusieurs moyens de réaliser la gestion des versions d’un produit. En fait, il y en a 2 !
Versioning local
Un logiciel de versioning local comme Git fonctionne avec un système de contrôle distribué. Cela permet à chaque intervenant de disposer d’une copie locale du projet (historique des modifications) sur son ordinateur local.
Quand le serveur central de stockage tombe en panne, la restauration des données récentes pour le développement se fait ainsi rapidement. Il suffit qu’un utilisateur envoie sa copie locale du projet sur le serveur central quand ce dernier redevient utilisable. La copie peut aussi être directement envoyée à d’autres utilisateurs.
Pour revenir à une version antérieure du code source ou enregistrer de nouvelles versions dans l’historique du projet, il n’y a pas besoin d’un serveur distant. Tout utilisateur peut faire la sauvegarde sur sa machine locale et synchroniser plus tard son ordinateur avec le serveur référence.
Versioning distant
Le versioning distant (comme celui proposé par Subversion) permet à plusieurs clients d’accéder aux fichiers du projet sur un serveur de manière simultanée.
Chaque utilisateur peut exporter des données vers son ordinateur local ou transférer des fichiers vers le serveur en temps réel. Chaque développeur peut ainsi facilement savoir ce que les autres font sur le projet, ce qui simplifie la collaboration des équipes.
Dans le cadre d’un versioning distant, aucune modification de code ou collaboration active ne peut se faire sans accès au serveur.
Avec ce type de stockage, si la base de données du serveur référent devient corrompue ou indisponible et que des sauvegardes récentes locales n’ont pas été effectuées, tous les correctifs sont perdus. Il est même possible de perdre tout l’historique du projet. Quand une version donnée est touchée, toutes les modifications apportées après cette version sont perdues. Cela peut grandement ralentir le projet de code.
Un logiciel de versionnage local se montre plus intéressant sur ce point, car le travail sur les fichiers ne s’arrête pas, indépendamment de l’état du serveur central.
Les outils de versioning les plus populaires
Grâce à leurs fonctionnalités intuitives qui facilitent grandement la vie des équipes de développement informatique, certains logiciels de versioning se démarquent clairement des autres.
Git
Git est un logiciel de gestion de versions basé sur un système de contrôle décentralisé. Cela signifie que les utilisateurs peuvent accéder à un serveur de référence pour sauvegarder l’historique des modifications des fichiers.
De manière parallèle, ce système permet à chaque utilisateur de disposer d’une copie intégrale et actualisée de cet historique sur son ordinateur local. Cela permet de continuer le projet sans grande difficulté, si le serveur central tombe en panne par exemple.
Proposant l’intégration informatique continue, ce logiciel open source et gratuit est écrit avec plusieurs langages de programmation : Python, C, Script Shell, Tool Command Language, Perl et C++.
Cet outil de versioning peut facilement s’adapter à tout type de projet de code. Les fonctionnalités sont nombreuses :
- Apprentissage automatique des algorithmes du logiciel sur les arborescences de fichiers du code source
- création des branches
- Réalisation des commandes merges et des reverts
- Comparaison des anciennes versions
- Stockage des différences de contenu pour les fichiers
Git garantit l’intégrité du code source grâce à SHA1, un algorithme de hachage à sécurité cryptographique.
Subversion (SVN)
Cet outil de versioning libre est distribué sous licence Apache et fonctionne selon le mode client-serveur. SVN propose un système de contrôle centralisé des versions du produit à développer. Les fichiers du référentiel projet sont stockés sur un serveur distant unique. Les utilisateurs peuvent recopier les fichiers depuis le serveur central pour effectuer les modifications de code nécessaires. Les données modifiées sont ensuite envoyées vers le serveur.
Avec SVN, il est facile de renommer et de déplacer les fichiers, les objets ou les bibliothèques.
L’outil permet aussi le versionnage des métadonnées grâce à l’attribution de propriétés. Plusieurs actions sont également possibles avec SVN (synchronisation incrémentale des dépôts de fichiers, filtrage de l’historique des extractions des données, examen et comparaison des fichiers, etc.).
Quand le serveur distant a une disponibilité maximale, Subversion est l’un des meilleurs outils de versioning pour travailler à plusieurs et simultanément sur les mêmes fichiers.
Mercurial SCM
Écrit avec les langages C, Python et Rust, le logiciel de versioning Mercurial propose aussi un système de contrôle des fichiers décentralisé à l’instar de Git. La solution fonctionne avec l’écrasante majorité des systèmes d’exploitation et des environnements de développement intégrés existants.
Mercurial s’adapte parfaitement aux contraintes des grands projets de développement sans perdre en rapidité, intuitivité et ergonomie pour les utilisateurs. Utilisant un protocole réseau basé sur HTTP et doté d’une interface Web intégrée, ce logiciel de gestion des versions peut fonctionner sans le déploiement d’un référentiel sur un serveur.
Il propose des fonctionnalités avancées pour la gestion des branches, des répertoires et des fusions de fichiers.
Les performances de Mercurial ne sont plus à prouver quand il s’agit de modifier ou de partager les fichiers ASCII et binaires. Création des commits, création de clones, gestion non linéaire des historiques, sécurité SHA1… Les fonctionnalités de Mercurial sont nombreuses. Il existe d’ailleurs certaines extensions que vous pouvez installer pour augmenter la performance de l’outil de versioning.
Bon à savoir : Le logiciel est libre et gratuit.
Avant de se quitter…
Si cet article sur les logiciels de versioning vous a plu, n’hésitez pas à le partager sur les réseaux sociaux et à vous abonner à notre newsletter digitale pour recevoir nos prochains articles.
Vous pouvez également suivre nos meilleurs articles via notre flux RSS : https://www.leptidigital.fr/tag/newsletter-digitale/feed/ (il vous suffit de l’insérer dans votre lecteur de flux RSS préféré (ex : Feedly)).
Nous sommes aussi actifs sur LinkedIn, Twitter, Facebook et YouTube.
Pour toute question associée à cet article, n’hésitez pas à utiliser la section « commentaires » pour nous faire part de votre remarque, nous vous répondrons (avec plaisir) dans les meilleurs délais.

Principalement passionné par les nouvelles technologies, l’IA, la cybersécurité, je suis un professionnel de nature discrète qui n’aime pas trop les réseaux sociaux (je n’ai pas de comptes publics). Rédacteur indépendant pour LEPTIDIGITAL, j’interviens en priorité sur des sujets d’actualité mais aussi sur des articles de fond. Pour me contacter : [email protected]