Aller au contenu principal

Qu'est-ce que le contrôle de version ?

Résumé : un système de contrôle de version (VCS, pour Version Control System) est un logiciel qui enregistre chaque modification d'un ensemble de fichiers, permet de revenir à n'importe quelle version passée, et de savoir qui a fait quoi et pourquoi. Cette leçon en donne la définition précise, les analogies utiles, et retrace l'évolution en trois générations.


1. La définition en une phrase

Un système de contrôle de version est un outil qui suit l'évolution d'un projet dans le temps, en enregistrant chaque changement avec son auteur, sa date et sa raison.

Ce n'est pas juste une sauvegarde. C'est un journal daté et signé de tout ce qui s'est passé dans un projet, exploitable à volonté.


2. Trois analogies pour bien visualiser

Analogie 1 · La photo à chaque étape

Imaginez que vous prenez une photo de tout votre code après chaque modification importante. Ces photos forment une bande dessinée du projet.

Chaque photo est complète (le projet entier), mais Git est intelligent : il ne stocke que les différences avec la photo précédente. Sur le disque, ça reste léger.

Analogie 2 · La machine à remonter le temps

Un VCS transforme votre projet en machine à remonter le temps.

Vous ne repartez pas de zéro. Vous repartez d'un état connu qui fonctionnait, et vous appliquez le correctif à partir de là.

Analogie 3 · Wikipedia

Chaque article Wikipedia a un onglet « Historique ». Vous y voyez :

  • Qui a modifié quoi.
  • À quelle date.
  • Une raison (le résumé de la modification).
  • La possibilité de revenir à une version antérieure en un clic.

Un VCS fait exactement ça, pour du code.


3. Ce qu'un VCS enregistre vraiment

À chaque enregistrement (appelé un commit), le système sauvegarde :

ÉlémentExemple
Fichiers modifiésapp.js, README.md
Lignes ajoutées / supprimées+12 lignes, −4 lignes
AuteurAlice Martin <[email protected]>
Date et heure précises2025-03-14 09:47:22
Message de commit« Corriger la validation du courriel »
Identifiant uniquea1b2c3d4… (empreinte cryptographique)

Cet identifiant unique garantit que la version ne peut pas être modifiée en silence : si un caractère change, l'identifiant change aussi. C'est ce qui rend Git incorruptible.


4. Un peu d'histoire : les trois générations de VCS

Le contrôle de version n'est pas né avec Git. Voici les trois grandes étapes.

Génération 1 · Local (années 70–80)

SCCS (1972), puis RCS (1982). Le versioning vit sur votre disque uniquement.

Simple, mais dangereux : une panne disque = tout le projet et son histoire évaporés. Et impossible de collaborer, chacun a son propre historique isolé.

Génération 2 · Centralisé (années 90–2000)

CVS (1990), puis Subversion / SVN (2000). Un serveur central unique stocke la vérité du projet. Chaque développeur télécharge la version la plus récente et renvoie ses modifications au serveur.

C'était un vrai progrès — la collaboration à distance devient possible. Mais deux limites :

  • Pas de tolérance de panne : serveur en panne = équipe à l'arrêt.
  • Pas de commit hors-ligne : dans le train, à la maison sans réseau, impossible d'enregistrer une étape intermédiaire.

Génération 3 · Distribué (depuis 2005)

Git (2005, créé par Linus Torvalds pour le noyau Linux), et son cousin Mercurial. Chaque développeur possède une copie complète du projet, avec toute son histoire.

C'est le modèle qui a gagné. Les avantages :

  • Le serveur peut tomber : chaque poste contient l'intégralité du projet et de son histoire.
  • On peut travailler sans réseau : train, avion, panne internet.
  • La synchronisation avec l'équipe est volontaire, pas subie à chaque enregistrement.

5. Pourquoi la « distribution » a tout changé

La différence entre centralisé et distribué n'est pas seulement technique — elle est culturelle.

AspectCentralisé (SVN)Distribué (Git)
Enregistrer un changementNécessite le réseauLocal, instantané
Créer une branche pour expérimenterCoûteux, rarement faitGratuit, ~1 seconde
Fusionner deux idéesDouloureuxGuidé par l'outil
Contribuer à un projet inconnuIl faut un compte serveurIl suffit de télécharger un dossier
Perte du serveurCatastropheAucun impact

C'est cette culture de la légèreté (brancher, tester, jeter, refaire, sans peur) qui a permis à Git de devenir la fondation du DevOps moderne, du CI/CD, du GitOps, et de tout l'open source contemporain.


Retenir en 30 secondes

  • Un VCS = journal daté et signé de toutes les modifications d'un projet.
  • Trois analogies utiles : la photo, la machine à remonter le temps, l'historique Wikipedia.
  • Trois générations : local, centralisé, distribué.
  • Git a gagné parce qu'il est distribué : chaque poste est autonome, la collaboration est volontaire, brancher ne coûte rien.

Suivant : Git vs GitHub vs GitLab vs Bitbucket →