Git 🌙
Chapters â–Ÿ 2nd Edition

1.1 DĂ©marrage rapide - À propos de la gestion de version

Ce chapitre traite du dĂ©marrage rapide avec Git. Nous commencerons par expliquer les bases de la gestion de version, puis nous parlerons de l’installation de Git sur votre systĂšme et finalement du paramĂ©trage pour commencer Ă  l’utiliser. À la fin de ce chapitre vous devriez en savoir assez pour comprendre pourquoi on parle beaucoup de Git, pourquoi vous devriez l’utiliser et vous devriez en avoir une installation prĂȘte Ă  l’emploi.

À propos de la gestion de version

Qu’est-ce que la gestion de version et pourquoi devriez-vous vous en soucier ? Un gestionnaire de version est un systĂšme qui enregistre l’évolution d’un fichier ou d’un ensemble de fichiers au cours du temps de maniĂšre Ă  ce qu’on puisse rappeler une version antĂ©rieure d’un fichier Ă  tout moment. Dans les exemples de ce livre, nous utiliserons des fichiers sources de logiciel comme fichiers sous gestion de version, bien qu’en rĂ©alitĂ© on puisse l’utiliser avec pratiquement tous les types de fichiers d’un ordinateur.

Si vous ĂȘtes un dessinateur ou un dĂ©veloppeur web, et que vous voulez conserver toutes les versions d’une image ou d’une mise en page (ce que vous souhaiteriez assurĂ©ment), un systĂšme de gestion de version (VCS en anglais pour Version Control System) est un outil qu’il est trĂšs sage d’utiliser. Il vous permet de ramener un fichier Ă  un Ă©tat prĂ©cĂ©dent, de ramener le projet complet Ă  un Ă©tat prĂ©cĂ©dent, de visualiser les changements au cours du temps, de voir qui a modifiĂ© quelque chose qui pourrait causer un problĂšme, qui a introduit un problĂšme et quand, et plus encore. Utiliser un VCS signifie aussi gĂ©nĂ©ralement que si vous vous trompez ou que vous perdez des fichiers, vous pouvez facilement revenir Ă  un Ă©tat stable. De plus, vous obtenez tous ces avantages avec peu de travail additionnel.

Les systĂšmes de gestion de version locaux

La mĂ©thode courante pour la gestion de version est gĂ©nĂ©ralement de recopier les fichiers dans un autre rĂ©pertoire (peut-ĂȘtre avec un nom incluant la date dans le meilleur des cas). Cette mĂ©thode est la plus courante parce que c’est la plus simple, mais c’est aussi la moins fiable. Il est facile d’oublier le rĂ©pertoire dans lequel vous ĂȘtes et d’écrire accidentellement dans le mauvais fichier ou d’écraser des fichiers que vous vouliez conserver.

Pour traiter ce problĂšme, les programmeurs ont dĂ©veloppĂ© il y a longtemps des VCS locaux qui utilisaient une base de donnĂ©es simple pour conserver les modifications d’un fichier.

Diagramme de gestion de version locale
Figure 1. Gestion de version locale.

Un des systĂšmes les plus populaires Ă©tait RCS, qui est encore distribuĂ© avec de nombreux systĂšmes d’exploitation aujourd’hui. Cet outil fonctionne en conservant des ensembles de patchs (c’est-Ă -dire la diffĂ©rence entre les fichiers) d’une version Ă  l’autre dans un format spĂ©cial sur disque ; il peut alors restituer l’état de n’importe quel fichier Ă  n’importe quel instant en ajoutant toutes les diffĂ©rences.

Les systÚmes de gestion de version centralisés

Le problĂšme majeur que les gens rencontrent est qu’ils ont besoin de collaborer avec des dĂ©veloppeurs sur d’autres ordinateurs. Pour traiter ce problĂšme, les systĂšmes de gestion de version centralisĂ©s (CVCS en anglais pour Centralized Version Control Systems) furent dĂ©veloppĂ©s. Ces systĂšmes tels que CVS, Subversion, et Perforce, mettent en place un serveur central qui contient tous les fichiers sous gestion de version, et des clients qui peuvent extraire les fichiers de ce dĂ©pĂŽt central. Pendant de nombreuses annĂ©es, cela a Ă©tĂ© le standard pour la gestion de version.

Diagramme de gestion de version centralisée.
Figure 2. Gestion de version centralisée.

Ce schĂ©ma offre de nombreux avantages par rapport Ă  la gestion de version locale. Par exemple, chacun sait jusqu’à un certain point ce que tous les autres sont en train de faire sur le projet. Les administrateurs ont un contrĂŽle fin des permissions et il est beaucoup plus facile d’administrer un CVCS que de gĂ©rer des bases de donnĂ©es locales.

Cependant ce systĂšme a aussi de nombreux dĂ©fauts. Le plus visible est le point unique de panne que le serveur centralisĂ© reprĂ©sente. Si ce serveur est en panne pendant une heure, alors durant cette heure, aucun client ne peut collaborer ou enregistrer les modifications issues de son travail. Si le disque dur du serveur central se corrompt, et s’il n’y a pas eu de sauvegarde, vous perdez absolument tout de l’historique d’un projet en dehors des sauvegardes locales que les gens auraient pu rĂ©aliser sur leurs machines locales. Les systĂšmes de gestion de version locaux souffrent du mĂȘme problĂšme — dĂšs qu’on a tout l’historique d’un projet sauvegardĂ© Ă  un endroit unique, on prend le risque de tout perdre.

Les systÚmes de gestion de version distribués

C’est Ă  ce moment que les systĂšmes de gestion de version distribuĂ©s entrent en jeu (DVCS en anglais pour Distributed Version Control Systems). Dans un DVCS (tel que Git, Mercurial ou Darcs), les clients n’extraient plus seulement la derniĂšre version d’un fichier, mais ils dupliquent complĂštement le dĂ©pĂŽt. Ainsi, si le serveur disparaĂźt et si les systĂšmes collaboraient via ce serveur, n’importe quel dĂ©pĂŽt d’un des clients peut ĂȘtre copiĂ© sur le serveur pour le restaurer. Chaque extraction devient une sauvegarde complĂšte de toutes les donnĂ©es.

Diagramme de gestion de version distribuée
Figure 3. Gestion de version distribuée.

De plus, un grand nombre de ces systĂšmes gĂšre particuliĂšrement bien le fait d’avoir plusieurs dĂ©pĂŽts avec lesquels travailler, vous permettant de collaborer avec diffĂ©rents groupes de personnes de maniĂšres diffĂ©rentes simultanĂ©ment dans le mĂȘme projet. Cela permet la mise en place de diffĂ©rentes chaĂźnes de traitement qui ne sont pas rĂ©alisables avec les systĂšmes centralisĂ©s, tels que les modĂšles hiĂ©rarchiques.

scroll-to-top