Maison >outils de développement >git >Comment git assure-t-il la redondance des données ?

Comment git assure-t-il la redondance des données ?

PHPz
PHPzoriginal
2023-04-04 10:43:32748parcourir

Git est un système de contrôle de version créé par Linus Torvalds en 2005. Git, avec son système de contrôle de version distribué efficace, est devenu actuellement l'un des outils de gestion de code source les plus populaires. Dans Git, la redondance des données est une fonctionnalité très importante et elle est implémentée via des algorithmes de stockage d’objets et de hachage.

1. Stockage d'objets

Dans Git, chaque version de données est stockée sous forme d'objet, appelé « objet Git ». Ces objets incluent des fichiers, du code, de l'historique, etc. Tous les objets Git sont stockés dans un endroit appelé « bibliothèque d'objets ». Les bibliothèques d'objets contiennent généralement trois types d'objets : les objets blob, les objets arborescence et les objets commit.

L'objet Blob est le type d'objet le plus basique dans Git, il représente un fichier. Lorsque nous modifions un fichier et l'ajoutons à un référentiel Git, Git convertit le fichier en objet blob et le stocke dans la bibliothèque d'objets. De cette façon, chaque version du fichier possède une valeur de hachage SHA-1 unique qui lui correspond, donc même si le contenu est modifié, un nouvel objet blob sera généré.

Un objet Tree est également appelé dossier, c'est une liste contenant plusieurs objets blob et d'autres objets arborescence. Chaque objet d'arborescence représente un dossier et contient tous les objets blob et les objets d'arborescence des sous-dossiers du dossier. De cette façon, chaque version du dossier possède une valeur de hachage SHA-1 unique qui lui correspond.

L'objet Commit contient des informations relatives à la soumission, telles que l'auteur, l'horodatage, la description de la soumission, etc. Chaque commit possède un hachage SHA-1 unique qui lui correspond. Lorsqu'une validation est effectuée, Git crée un nouvel objet de validation et utilise l'objet d'arborescence actuel comme instantané. Cet objet de validation contiendra la valeur SHA-1 de l'objet de validation précédent, formant ainsi une chronologie, conservant ainsi toutes les versions historiques.

2. Algorithme de hachage

Git utilise l'algorithme de hachage SHA-1 pour éviter la perte accidentelle ou la falsification des données. L'algorithme SHA-1 est très similaire à l'algorithme MD5, qui convertit les données d'entrée de n'importe quelle longueur en une valeur de hachage de 160 bits et produit dans tous les cas une valeur de hachage unique.

Lorsque nous ajoutons un nouvel objet blob ou arbre à Git, Git calculera sa valeur de hachage en fonction de l'algorithme SHA-1. Git utilisera ensuite la valeur de hachage comme nom de fichier et enregistrera l'objet dans le répertoire ".git/objects". L’algorithme SHA-1 étant irréversible, chaque objet Git possède une valeur SHA-1 unique étroitement liée à son contenu.

Chaque fois qu'un dossier ou un fichier est modifié, Git calculera la valeur de hachage SHA-1 du nouveau dossier ou fichier et l'ajoutera à la bibliothèque d'objets en tant que nouvel objet blob ou objet arborescence. Cela garantit l'intégrité des versions historiques et la redondance des données Même si un objet est accidentellement supprimé, l'objet d'origine peut être récupéré via la valeur de hachage.

Résumé

La redondance des données de Git est obtenue grâce au stockage d'objets et à des algorithmes de hachage. L'utilisation du stockage d'objets permet à Git de stocker toutes les données de version de manière efficace et flexible et de garantir l'unicité de la valeur de hachage de l'objet grâce à l'algorithme de hachage. Cette méthode garantit que toutes les données de l'entrepôt Git peuvent être empêchées d'être perdues ou falsifiées, garantissant ainsi l'intégrité et la sécurité des données de version.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn