Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Git
  3. Git et la gestion de version
Extrait - Git Maîtrisez la gestion de vos versions (concepts, utilisation et cas pratiques) (4e édition)
Extraits du livre
Git Maîtrisez la gestion de vos versions (concepts, utilisation et cas pratiques) (4e édition) Revenir à la page d'achat du livre

Git et la gestion de version

La gestion de version

Un système de gestion de versions (VCS en anglais pour Version Control System ou aussi SCM pour Source Content Management), ou encore système de versionning, est un système qui enregistre toutes les modifications apportées à une liste de fichiers. C’est un système qui permet de suivre précisément l’évolution du contenu des fichiers. Ce type de système est très utilisé en développement informatique, mais il n’y est pas limité puisque n’importe quelle activité utilisant des fichiers lisibles peut être suivie par un VCS. Par exemple, les systèmes Wiki (comme Wikipédia) utilisent un VCS. Il est également possible de citer le très connu site d’entraide informatique Stack Overflow qui suit les versions des questions et des réponses.

Le suivi des fichiers est effectué par sauvegarde des modifications. En effet, lorsque vous avez fini de modifier un fichier, vous allez indiquer au VCS que vous avez terminé ce travail et pour quelles raisons vous l’avez fait. Les modifications effectuées sur le fichier seront sauvegardées par le système.

Il ajoutera alors une nouvelle ligne (qu’on appellera révision) dans votre historique. Le terme révision (appelé également commit en anglais) définit un ensemble de modifications qui sont enregistrées par le système.

Les intérêts d’un tel système sont multiples et vont bien au-delà du suivi pur et simple d’un projet.

Les intérêts de la gestion de version

1. Une véritable machine à remonter le temps

Imaginez une petite situation habituelle : vous êtes un indépendant et vous commencez votre semaine. Lundi matin à 9h, un de vos clients vous appelle : "Vous deviez modifier mon site pour enregistrer tout ce que faisaient les utilisateurs du site". Vous vous empressez de vous excuser et vous modifiez le code pour ajouter la fonctionnalité le plus rapidement possible. Une fois correctement réveillé - soit une heure et deux cafés plus tard -, vous vous rendez compte que vous n’êtes pas du tout parti dans la bonne direction. Le code que vous avez produit ne servira à rien et complexifie l’application alors qu’il y avait une manière beaucoup plus simple de faire. Votre VCS vous permet de revenir très simplement en arrière comme si ce début de lundi n’avait pas existé. Vous repartez donc avec un répertoire de travail propre.

Mais votre VCS va encore plus loin puisqu’il peut vous permettre de faire un retour en arrière de plusieurs années sans problème pourvu que vous l’ayez utilisé à ce moment-là.

Un système de versionning permet donc de revenir très facilement en arrière et à n’importe quel endroit de l’historique.

2. Une documentation détaillée et datée

Dans une équipe, lorsqu’on ajoute une fonctionnalité à un logiciel, il arrive régulièrement qu’on soit bloqué par une ou plusieurs lignes qu’on ne comprend pas. Le code est peu documenté et n’est pas du tout clair. Sans versionning, un développeur pourrait passer plusieurs heures à comprendre le code et à le documenter. Avec un VCS, vous...

Histoire de la gestion de version

1. Systèmes de gestion de versions locaux

Les systèmes à stockage local sont des systèmes où tous les utilisateurs partagent le même système de fichiers. Le système conserve les fichiers d’origine puis toutes les modifications effectuées par la suite. De cette manière, il est possible de restaurer les fichiers à n’importe quelle date pendant laquelle a été utilisé le VCS. Les systèmes à stockage local sont arrivés en 1972 grâce à SCCS (Source Code Control System) développé par Marc Rochkind travaillant pour les laboratoires Bell.

En 1982, au cours d’un projet universitaire, Walter F. Tichy publie GNU RCS (Revision Control System). Il apportait aussi un gain de performance important comparé à SCCS grâce à une autre manière de stocker les fichiers. En effet, RCS stockait les dernières versions des fichiers et la différence avec l’ancien fichier, ce qui permettait d’avoir la dernière version des fichiers plus rapidement.

Ce type de solution ne permettait pas aux collaborateurs de travailler ensemble s’ils n’utilisaient pas le même système de fichiers. La collaboration n’était pas aisée et ne permettait aucune mobilité. Avec ces systèmes seuls les fichiers sont versionnés et ils possèdent chacun leur propre historique de version.

Après avoir été très utilisé dans le monde du libre, RCS a peu à peu été remplacé par CVS.

2. Systèmes de gestion de versions centralisés

Dans ce type de système, toutes les données du suivi de version sont stockées sur un serveur. À partir de ces systèmes, l’administrateur...

Pourquoi Git ?

Tout d’abord, comme nous l’avons appris dans les pages précédentes, Git est un système libre. Il ne peut donc pas y avoir de limitations contractuelles sur l’utilisation de Git. Quel que soit le nombre de collaborateurs, de projets ou de mises à jour, Git sera toujours gratuit.

Git possède aussi tous les avantages liés aux systèmes de gestion de versions décentralisés. C’est-à-dire qu’il est possible de travailler en mode déconnecté avec son dépôt tout en gardant des fonctionnalités avancées de collaboration lorsqu’on est connecté.

Git possède également un autre avantage important : sa performance. Git intègre beaucoup d’outils internes pour le rendre très performant (notamment pour l’utilisation des branches).

Un dernier avantage très important, Git est actuellement le système le plus populaire et il gagne en popularité chaque année. Il est difficile d’avoir des statistiques précises sur les systèmes de gestion de versions installés et utilisés dans les entreprises. Néanmoins, il est possible de juger de la popularité de certains termes utilisés lors de recherches Google grâce à Google Trends. Il est donc possible de prendre conscience du volume de recherches de certains mots-clés. Voici le graphique comparant Git, Mercurial et Apache Subversion.

images/01EI01.png

Stack Overflow propose également un outil permettant de comparer la popularité des différents tags. L’image ci-dessous présente les résultats de comparaison de Git, Mercurial et Subversion (SVN). Les résultats sont exprimés sur l’axe des ordonnées en pourcentage de questions pour chaque mois entre 2009 et 2022.

images/01EI02.png