Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Système de contrôle de version

Par Mohamed AIT ABDERRAHMAN Publié le 06/08/2015 à 18:32:45 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Cet article présente le premier pas avant de commencer à travailler avec Git. Tout d’abord, on va commencer par définir c’est quoi un système de contrôle de version, et puis, présenter les différents types des systèmes de contrôle de version, leurs avantages et leurs inconvénients, et enfin savoir pourquoi Git est à leurs tête.

Notez bien que l’article n’est pas seulement destiné au développeur, mais aussi à tous ceux qui éditent des fichiers sur leurs machines (des documents, des images, des livres…).

Introduction

Un système de contrôle de version, appelé en anglais Version Control System (VCS), est un outil qui vous permettra de sauvegarder les changements relatifs à un ou plusieurs fichiers au fur et à mesure que vous travaillez dessus, et de pouvoir revenir à des versions précédentes en cas de besoin.

Si vous êtes un développeur, vous avez tendance à effectuer de petites modifications sur votre application et à les retirer le lendemain. Des fois, vous bousillez tout le projet, et vous voudriez revenir à un état ou le projet marchait bien (vous n’allez pas faire Ctrl+Z ?). L’utilisation d’un VCS sera très judicieuse. Il vous permettra de rétablir les fichiers et, même, l’ensemble du projet à un état antérieur, comparer les modifications d’une manière chronologique, voir qui a modifié quelque chose qui pourrait être la cause d'un problème… et quand, et plus encore. Si vous faites des erreurs graves ou que vous perdez des fichiers sources, grâce au VCS, vous pouvez facilement les récupérer et on peu de temps.

Types de VCS

Locale

La plupart des gens, pour contrôler les versions de leur travail et avoir un historique, copie les fichiers dans un autre répertoire, peut-être un répertoire associé à la date et l’heure de la modification effectué. C’est la manière la plus simple de le faire, mais elle est également une vraie source d’erreurs. Il est facile d'oublier où vous vous trouvez et modifier accidentellement le mauvais fichier ou bien écraser une nouvelle version de votre travail par une ancienne.

Pour remédier à ce genre de problème, les programmeurs ont développé des VCSs locaux, ceux sont des petits systèmes avec une simple base de données qui garde tous les changements des fichiers sous contrôle (ce qu’on appelle les révisions).

L’un des VCSs locaux le plus populaire est le RCS (Revision Control System), qui est toujours utilisé. Pour les gens qui on le Mac OS X, si vous installez les outils de développement, vous pourrez utiliser la commande rcs pour l’exploiter. RCS fonctionne en créant des correctifs (patchs), qui contiennent les différences entre les fichiers, dans un format spécial sous forme de fichier, Ainsi, le VCS pourra alors recréer l’état d’un fichier donnée, et à quoi il ressemblait à un moment donné en additionnant tous les ces patchs.

Néanmoins, ce genre de système souffre d’un inconvénient, c’est que, si la machine ou le disque dur qui contient la base de données tombe en panne, tout le travail est perdu.

Centralisé

L’enjeu majeur que les gens ont rencontré c’est qu'ils ont besoin de collaborer avec d’autres développeurs sur d'autres machines. Pour faire face à ce problème, les programmeurs, encore une fois et on les remercie, ont développé les VCSs centralisés (Centralized VCS, CVCS). Le plus populaire d’entre eux est Subversion, plus connu sous le nom de SVN. Ces types de VCSs étaient la norme dans le contrôle de version pendant de nombreuses années.

Les VCSs centralisés, comme son nom l’indique, centralise toutes les versions des fichiers dans un seul serveur central, et plusieurs clients interagissent avec ce dernier pour récupérer (faire des checkout) leurs fichiers et contrôler leurs versions.

Cette configuration offre de nombreux avantages. Par exemple, tout le monde sait à un certain degré ce que les autres sont en train de faire sur le projet. Les administrateurs ont un contrôle très fin sur qui peut faire quoi, et il est beaucoup plus facile d'administrer un CVCS que de faire face à des bases de données locales éparpillées sur chaque client.

Toutefois, cette configuration a aussi quelques inconvénients graves. Si ce serveur tombe en panne, le travail s’arrête, personne ne pourra collaborer ou enregistrer ses modifications. Si le disque dur qui contient la base de données du CVCS vient d’être corrompu, et que les backups n’ont pas été faits, vous perdez absolument tout, tout l’historique du projet, sauf quelques clichés (snapshots) que les clients ont sur leurs machines. A chaque fois que vous rassemblez tout l’historique du projet en un seul endroit, vous risquez de perdre tout.

Distribué

C’est là où les VCS décentralisé interviennent, on les appelle des VCS distribué (Distributed VCS, DVCS). Dans ce type de VCS, comme Git et outres, Les clients ne se contentent pas seulement de consulter (checkout) le dernier snapshot des fichiers, ils reflètent complètement le dépôt (repository). Ainsi, si un serveur tombe en panne, l'un des dépôts des clients pourra être copié sur le serveur pour le restaurer. Chaque checkout est vraiment une sauvegarde complète de toutes les données (les changements).

De plus, beaucoup de ces systèmes supportent le travail sur des dépôts distants, donc vous pouvez collaborer avec différents groupes de personnes de différentes façons simultanément dans le même projet. Cela vous permet de configurer plusieurs types de flux de travail qui ne sont pas possibles dans les systèmes centralisés, tels que les modèles hiérarchiques (on le verra dans un futur article).

Bref historique

Comme vous le savez surement, le noyau Linux est un projet open source d’une grande envergure. Au cours de son cycle de vie il a subi plusieurs évènements marquants :

  • Entre 1991 et 2002, les modifications effectués été rassemblé et transmise sous forme de patchs et des fichiers archivés.

  • En 2002, ils ont commencé à utiliser BitKeeper, un DVCS propriétaire.

  • En 2005, la relation entre la communauté qui a développé le noyau Linux et la société commerciale qui a développé BitKeeper a été coupé, et le statut « gratuit » de l'outil a été révoqué.

Ce dernier évènement a conduit la communauté, et en particulier Linus Torvalds (le créateur de Linux), à développer leur propre outil basé sur quelques notions apprises lors de l'utilisation de BitKeeper. Ils l’ont appelé Git, et depuis sa naissance, il a évolué pour être plus facile à utiliser.

Voici certains objectifs de ce nouveau système :

  • Simplicité de la conception

  • Support du développement non-linéaire (les branches)

  • Rapidité

  • Distributivité

  • Efficacité (surtout dans les grands projets)

On verra, on détails, dans des futurs articles comment ces objectifs sont atteint.

Conclusion

On arrive à la fin de l’article, j’espère que vous savez maintenant quels sont les différents types de système de contrôle de version qui existe, à savoir les systèmes locaux, centralisés et distribués, et aussi pourquoi vous entendez beaucoup parler de Git.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels