Difference between revisions of "GIT"

From Coopernix
Jump to: navigation, search
(Created page with "== Fonctionnement == Git possède deux structures de données : une base d'objets et un cache de répertoires. Il existe quatre types d'objets : * l'objet '''blob''' (pour b...")
(No difference)

Revision as of 13:50, 10 December 2020

Fonctionnement

Git possède deux structures de données : une base d'objets et un cache de répertoires. Il existe quatre types d'objets :

  • l'objet blob (pour binary large object désignant un ensemble de données brutes[1]), qui représente le contenu d'un fichier  ;
  • l'objet tree (mot anglais signifiant arbre), qui décrit une arborescence de fichiers. Il est constitué d'une liste d'objets de type blobs et des informations qui leur sont associées, tel que le nom du fichier et les permissions. Il peut contenir récursivement d'autres trees pour représenter les sous-répertoires ;
  • l'objet commit (résultat de l'opération du même nom signifiant « valider une transaction »[2]), qui correspond à une arborescence de fichiers (tree) enrichie de métadonnées comme un message de description, le nom de l'auteurTemplate:Etc. Il pointe également vers un ou plusieurs objets commit parents pour former un graphe d'historiques[1] ;
  • l'objet tag (étiquette) qui est une manière de nommer arbitrairement un commit spécifique pour l'identifier plus facilement. Il est en général utilisé pour marquer certains commits, par exemple par un numéro ou un nom de version (2.1 ou bien Lucid Lynx).

La base des objets peut contenir n'importe quel type d'objets. Une couche intermédiaire, utilisant des index (les sommes de contrôle), établit un lien entre les objets de la base et l'arborescence des fichiers.

Chaque objet est identifié par une somme de contrôle SHA-1 de son contenu. Git calcule la somme de contrôle et utilise cette valeur pour déterminer le nom de fichier de l'objet. L'objet est placé dans un répertoire dont le nom correspond aux deux premiers caractères de la somme de contrôle. Le reste de la somme de contrôle constitue alors le nom du fichier pour cet objet.

Git enregistre chaque révision dans un fichier en tant qu'objet blob unique. Les relations entre les objets blobs sont déterminées en examinant les objets commit. En général, les objets blobs sont stockés dans leur intégralité en utilisant la compression de la zlib. Ce principe peut rapidement consommer une grande quantité de place disque ; de ce fait, les objets peuvent être combinés dans des archives, qui utilisent la compression différentielle (c'est-à-dire que les blobs sont enregistrés sous la forme de différences par rapport aux autres blobs).

____
  1. 1.0 1.1 Template:Ouvrage
  2. http://gdt.oqlf.gouv.qc.ca/ficheOqlf.aspx?Id_Fiche=8371027#eng.