"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Mini-git, Comprendre comment les fichiers sont stockés dans les objets Git

Mini-git, Comprendre comment les fichiers sont stockés dans les objets Git

Publié le 2024-08-24
Parcourir:185

Mini-git, Understanding How Files Are Stored in Git Objects

Hier, j'ai décidé d'implémenter moi-même l'une des fonctionnalités principales de Git, en particulier la façon dont les fichiers sont stockés, ce que sont les objets Git et les processus de hachage et de compression. Il m'a fallu 4 heures pour développer, et dans cet article, je vais vous guider à travers mon processus de réflexion et mon approche.

Que se passe-t-il lorsque vous validez un fichier ?

Lorsque vous validez un fichier dans Git, plusieurs étapes importantes se produisent sous le capot :

Compression de fichiers :

Le contenu du fichier est compressé à l'aide d'un algorithme zlib pour réduire sa taille. Ce contenu compressé est ce qui est stocké dans la base de données d'objets Git.

Calcul de hachage :

Un hachage SHA-1 unique est généré à partir du contenu du fichier compressé. Ce hachage sert d'identifiant du fichier dans la base de données d'objets Git.

Stockage de l'objet :

Le fichier objet est stocké dans le répertoire .mygit/objects, organisé par les deux premiers caractères du hachage. Cette structure facilite la gestion et la récupération efficace des objets.
Mise à jour des informations de validation :

Pour démontrer comment les fichiers sont stockés dans git.
J'ai implémenté la fonctionnalité de validation, en prenant en compte un fichier

  1. Pour chaque fichier, j'ai calculé le hachage
  2. Dans le dossier des objets, un nouveau dossier est créé avec un nom égal aux deux premiers caractères du hachage.
  3. Et un fichier est créé dans ce dossier avec le hachage restant comme nom. (ce fichier stocke le format compressé du fichier validé)
  4. Modifications détectées en comparant le hachage nouvellement calculé et le dernier hachage calculé du fichier

Détection des changements

J'ai implémenté cet algorithme en fonction de ma propre approche, mais Git utilise des algorithmes plus efficaces pour ces opérations.

  1. Tableau de lignes extrait de oldContent et newContent
  2. Création d'une carte pour stocker la ligne comme clé et l'index comme valeur
  3. Création de deux nouveaux tableaux pour stocker les index des lignes communes dans oldContent et newContent 4.par exemple : OldCommonarray = [0, 3] alors les lignes supprimées seront [1,2]

Dépôt GitHub
Linkedin

Merci beaucoup pour votre temps.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/keerthivardhan1/mini-git-understanding-how-files-are-stored-in-git-objects-5bfb?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3