W3docs

Logiciels de contrôle de version

Découvrez les logiciels de contrôle de version, leurs avantages et inconvénients, et les outils les plus utilisés dans le développement.

Qu'est-ce qu'un logiciel de contrôle de version ?

Un logiciel de contrôle de version (VCS) est un outil qui enregistre les modifications apportées à un ensemble de fichiers au fil du temps, afin que vous puissiez rappeler n'importe quelle version antérieure, voir qui a modifié quoi, et combiner le travail de plusieurs personnes sans s'écraser mutuellement. Il constitue la colonne vertébrale de tout flux de travail collaboratif en développement logiciel et devient indispensable dès que plus d'une personne touche à une base de code.

Cette page explique les deux familles de logiciels de contrôle de version, passe en revue les outils les plus connus et leurs compromis, et vous aide à choisir celui qui convient à votre projet. Si vous souhaitez d'abord comprendre le concept sous-jacent, lisez Système de contrôle de version ; pour comprendre pourquoi Git en particulier s'est imposé, consultez Qu'est-ce que Git.

Centralisé vs. distribué

Presque tous les VCS appartiennent à l'une de deux architectures, et cette différence conditionne tout le reste.

  • Centralisé (CVCS) : un seul serveur détient l'historique de référence. Les clients extraient une copie de travail et livrent leurs modifications directement sur ce serveur. Exemples : CVS, SVN. L'avantage est une source de vérité unique et évidente, ainsi qu'un contrôle d'accès simple ; l'inconvénient est qu'il faut un accès réseau pour valider des modifications, et que le serveur constitue un point de défaillance unique.
  • Distribué (DVCS) : chaque clone est une copie complète de tout le dépôt, historique inclus. Vous validez, créez des branches et consultez l'historique localement et hors ligne, puis vous synchronisez avec les autres quand vous êtes prêt. Exemples : Git, Mercurial, Monotone. Cela rend la plupart des opérations instantanées et supprime le point de défaillance unique, au prix d'un modèle mental légèrement plus complexe.

La conception distribuée de Git est la principale raison pour laquelle la création de branches et les validations semblent instantanées — il n'y a pas d'aller-retour vers un serveur. Chaque clone effectué avec git clone contient déjà l'historique complet du projet.

Outils largement utilisés

Git

Git est aujourd'hui le système de contrôle de version distribué standard de fait. Il est rapide, efficace et gère des projets de toute taille. Ses points forts distinctifs sont la création de branches locales peu coûteuse (voir git branch), une zone de transit pratique (voir git add), et la prise en charge de nombreux flux de travail. C'est un logiciel libre et open source.

Git

Limitations. La prise en charge des fichiers binaires volumineux est faible par défaut — bien que Git LFS y remédie. Les opérations peuvent ralentir sur des dépôts très volumineux avec de longs historiques, et l'étendue des commandes peut sembler accablante pour les débutants.

CVS

CVS (Concurrent Versions System) est un système centralisé qui était historiquement populaire mais est désormais largement obsolète, supplanté par les outils distribués modernes. Il enregistre l'historique des fichiers et des documents et fonctionne sur presque toutes les plateformes matérielles et systèmes d'exploitation. C'est un logiciel libre et open source.

CVS

Limitations. CVS ne vérifie pas l'intégrité du dépôt et ne dispose pas de validations atomiques, de suivi des fusions ni de révisions signées — des lacunes qui ont directement motivé la création de ses successeurs.

SVN

SVN (Apache Subversion) est un système de contrôle de version centralisé largement utilisé durant les années 2000 et encore présent dans certains environnements d'entreprise ou anciens. Ses fonctionnalités comprennent les répertoires versionnés, les validations atomiques, le suivi des fusions, les opérations de copie/déplacement/renommage/suppression de première classe, un modèle client–serveur, des métadonnées versionnées libres, la prise en charge complète de MIME et le verrouillage de fichiers. C'est un logiciel libre et open source.

SVN

Limitations. Les horodatages de modification des fichiers ne sont pas stockés, la normalisation des noms de fichiers peut être problématique selon les plateformes, et il n'y a pas de prise en charge des révisions signées.

Mercurial

Mercurial est un système de contrôle de version distribué écrit principalement en Python. Il est rapide, prend en charge des projets de toute taille et dispose d'une interface réputée pour être prévisible et facile à apprendre. Il fonctionne sur les systèmes de type Unix, Windows et macOS, gère bien les fichiers binaires, et offre de solides capacités de fusion et de création de branches. C'est un logiciel libre et open source.

Mercurial

Limitations. Python est requis pour tous les modules complémentaires, les extractions partielles ne sont pas prises en charge, et il ne gère pas toujours bien les extensions tierces.

Monotone

Monotone est un système de contrôle de version distribué écrit en C++. C'est un VCS transactionnel en fichier unique offrant un fonctionnement totalement déconnecté, une fusion sensible à l'historique, des branches légères, une maintenance réduite et une synchronisation pair à pair. Il fonctionne sur Linux, Solaris, macOS, Windows et d'autres systèmes Unix. C'est un logiciel libre et open source.

Monotone

Limitations. Sans prise en charge de HTTP, les utilisateurs ne peuvent pas extraire ou valider depuis derrière un proxy, et certaines opérations — notamment le tirage initial — ont des problèmes de performances. Monotone est largement abandonné aujourd'hui et présente une pertinence moderne limitée.

Comparaison rapide

OutilArchitectureStatutPoint fort notableFaiblesse principale
GitDistribuéStandard industrielVitesse, branches, écosystèmeGros binaires, courbe d'apprentissage
MercurialDistribuéMaintenu, nicheInterface prévisible et simpleÉcosystème plus petit
SVNCentraliséHéritage / entrepriseVerrouillage de fichiers, modèle simpleNécessite un serveur pour valider
CVSCentraliséObsolèteImportance historiquePas de validations atomiques ni de vérification d'intégrité
MonotoneDistribuéLargement abandonnéModèle d'intégrité robustePas de HTTP, tirage initial lent

Lequel choisir ?

Pour presque tout nouveau projet, la réponse est Git : il dispose de la plus grande communauté, du meilleur support d'hébergement (GitHub, GitLab, Bitbucket), et des outils les plus avancés. N'envisagez une alternative que lorsqu'une contrainte concrète vous y pousse :

  • Mercurial — si votre équipe préfère un jeu de commandes plus réduit et cohérent et que vous n'êtes pas lié à l'écosystème Git.
  • SVN — si vous avez besoin d'un verrouillage strict des fichiers pour des ressources binaires non fusionnables, ou si vous maintenez un flux de travail centralisé existant.
  • CVS / Monotone — généralement uniquement pour maintenir un dépôt hérité existant ; à éviter pour tout nouveau travail.

Une fois que vous avez opté pour Git, l'étape suivante est de l'installer et d'apprendre comment fonctionne la gestion du code source en pratique.

Pratique

Pratique
Laquelle de ces options n'est pas une fonctionnalité de Git en tant que logiciel de contrôle de version ?
Laquelle de ces options n'est pas une fonctionnalité de Git en tant que logiciel de contrôle de version ?
Was this page helpful?