Git 🌙
Chapters â–Ÿ 2nd Edition

10.1 Les tripes de Git - Plomberie et porcelaine

Vous ĂȘtes peut-ĂȘtre arrivĂ© Ă  ce chapitre en en sautant certains autres ou aprĂšs avoir parcouru tout le reste du livre. Dans tous les cas, c’est ici que le fonctionnement interne et la mise en Ɠuvre de Git sont abordĂ©s. Pour nous, leur apprentissage a Ă©tĂ© fondamental pour comprendre Ă  quel point Git est utile et puissant, mais d’autres soutiennent que cela peut ĂȘtre source de confusion et peut ĂȘtre trop complexe pour les dĂ©butants. Nous en avons donc fait le dernier chapitre de ce livre pour que vous puissiez le lire tĂŽt ou tard lors de votre apprentissage. Nous vous laissons le choix.

Maintenant que vous ĂȘtes ici, commençons. Tout d’abord, si ce n’est pas encore clair, Git est fondamentalement un systĂšme de fichiers adressable par contenu avec l’interface utilisateur d’un VCS au-dessus. Vous en apprendrez plus sur ce que cela signifie dans quelques instants.

Aux premiers jours de Git (surtout avant la version 1.5), l’interface utilisateur Ă©tait beaucoup plus complexe, car elle Ă©tait centrĂ©e sur le systĂšme de fichiers plutĂŽt que sur l’aspect VCS. Ces derniĂšres annĂ©es, l’interface utilisateur a Ă©tĂ© peaufinĂ©e jusqu’à devenir aussi cohĂ©rente et facile Ă  utiliser que n’importe quel autre systĂšme. Pour beaucoup, l’image du Git des dĂ©buts avec son interface utilisateur complexe et difficile Ă  apprendre est toujours prĂ©sente.

La couche systĂšme de fichiers adressable par contenu est vraiment gĂ©niale et nous l’aborderons dans ce chapitre. Ensuite, vous apprendrez les mĂ©canismes de transfert ainsi que les tĂąches que vous serez amenĂ© Ă  accomplir pour maintenir un dĂ©pĂŽt.

Plomberie et porcelaine

Ce livre couvre l’utilisation de Git avec une trentaine de verbes comme checkout, branch, remote
​ Mais, puisque Git Ă©tait initialement une boĂźte Ă  outils (toolkit) pour VCS, plutĂŽt qu’un VCS complet et convivial, il dispose de tout un ensemble d’actions pour les tĂąches bas niveau qui Ă©taient conçues pour ĂȘtre liĂ©es dans le style UNIX ou appelĂ©es depuis des scripts. Ces commandes sont dites commandes de « plomberie » (plumbing) et les autres, plus conviviales sont appelĂ©es « la porcelaine » (porcelain).

Les neuf premiers chapitres du livre concernent presque exclusivement les commandes de porcelaine. Par contre, dans ce chapitre, vous serez principalement confrontĂ© aux commandes de plomberie bas niveau, car elles vous donnent accĂšs au fonctionnement interne de Git et aident Ă  montrer comment et pourquoi Git fonctionne comme il le fait. Beaucoup de ces commandes ne sont pas faites pour ĂȘtre utilisĂ©es Ă  la main sur une ligne de commande, mais sont plutĂŽt utilisĂ©es comme briques de base pour Ă©crire de nouveaux outils et scripts personnalisĂ©s.

Quand vous exécutez git init dans un nouveau répertoire ou un répertoire existant, Git crée un répertoire .git qui contient presque tout ce que Git stocke et manipule. Si vous voulez sauvegarder ou cloner votre dépÎt, copier ce seul répertoire suffirait presque. Ce chapitre traite principalement de ce que contient ce répertoire. Voici à quoi il ressemble :

$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/

Vous y verrez sans doute d’autres fichiers, mais ceci est un dĂ©pĂŽt qui vient d’ĂȘtre crĂ©Ă© avec git init et c’est ce que vous verrez par dĂ©faut. Le fichier description est utilisĂ© uniquement par le programme GitWeb, il ne faut donc pas s’en soucier. Le fichier config contient les options de configuration spĂ©cifiques Ă  votre projet et le rĂ©pertoire info contient un fichier d’exclusions listant les motifs que vous souhaitez ignorer et que vous ne voulez pas mettre dans un fichier .gitignore. Le rĂ©pertoire hooks contient les scripts de procĂ©dures automatiques cĂŽtĂ© client ou serveur, ils sont dĂ©crits en dĂ©tail dans Crochets Git.

Il reste quatre Ă©lĂ©ments importants : les fichiers HEAD et (pas encore crĂ©Ă©) index, ainsi que les rĂ©pertoires objects et refs. Ce sont les composants principaux d’un dĂ©pĂŽt Git. Le rĂ©pertoire objects stocke le contenu de votre base de donnĂ©es, le rĂ©pertoire refs stocke les pointeurs vers les objets commit de ces donnĂ©es (branches), le fichier HEAD pointe sur la branche qui est en cours dans votre rĂ©pertoire de travail et le fichier index est l’endroit oĂč Git stocke les informations sur la zone d’attente. Vous allez maintenant plonger en dĂ©tail dans chacune de ces sections et voir comment Git fonctionne.

scroll-to-top