TGViewer
Dev Tools Dev Tools @developer_tools · 3.2K subscribers
Post #242 6.1K
​​DeepGit: Hashing names

Ч1, Ч2, Ч3

Что-бы закончить с blob-aми , деревьями и коммитами надо разобраться как git генерирует имена файлам и как хранит все версии всех файлов.

Название git файла определяется следующим образом:
 tree #{text.lenght}\0

Общее правило: тип файла => решетка => длина текста => нулевой байт.

Это наш хедер.

Что-бы получить название файла:
Добавляем к хедеру текст файла и берем SHA1 сумму от результата.

Текст файла git сжимает через zlib.

Как это можно реализовать на python:
 [1]: import hashlib
In [2]: from hashlib import sha1
In [3]: sha = hashlib.sha1()
In [4]: line = "developer tools test line"
In [5]: header = f"blob {line.__len__()}\0"
In [6]: content = (header + line).encode()
In [7]: sha.update(content)
In [8]: sha.hexdigest()
Out[8]: '7f0571380d1f5e2a2fb13bb25eeefe5761895e7a'
In [9]: import zlib
In [10]: zlib.compress(content)

Первые два символа из 7f0571380d1f5e2a2fb13bb25eeefe5761895e7a пойдут как название директории, а остальные в название файла.

Резюме: Внутри git нет никакой магии, все данные весьма просто храняться и так-же просто используются.

Напоминаю Вам, что у нас есть чат: https://t.me/developer_tools_chat , непонимаю почему вас там так мало :)
More from @developer_tools
  1. Nov 1, 2021​​ray.so - прикольный тул для создания симпатичных код-шейр картинок. Даже плохой код тут…
  2. Oct 30, 2021​​inpaint - тул с устаревшим лендингом, но с простым интерфейсом который позволяет легко у…
  3. Oct 9, 2021​​Bubble - интересный тул для лепки сайта без кода. Довольно обширный функционал конструкт…
  4. Oct 8, 2021​​there - простенький тулл для просмотра локального времени тиммейтов, друзей колег. Не ед…
  5. Sep 24, 2021​​genact - тулл который создает видимость активности в терминале. Для работы нужно скачать…
  6. Sep 23, 2021​​unscreen - тул убирает фон на видео/gif. Есть API. Работает не идеально на кадре с Траво…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →