Поскольку моя работа требует, мне нужно загрузить только объект фиксации в ./git/objects
из удаленного репозитория git./.git/
метаданные содержат некоторую полезную информацию.Но в файл пакета включите объект commit / tree / blob.объекты дерева / блоба слишком велики, поэтому их не следует загружать.Может быть, мне нужно пересобрать клиент git или написать скрипт на python.
Я видел несколько проектов (например, https://github.com/lijiejie/GitHack
). Он скачивал файлы шаг за шагом, анализируя файл index
, и, наконец, выполнял коммит/ tree / blob объекты отделяются после загрузки.
введите описание изображения здесь
Но для этого метода необходим доступ к папке .git
через HTTP, и вы можетескачайте индексный файл прямо с github.
Я не понимаю, как github взаимодействует с git-клиентом.
Я попытался взглянуть на исходный код для C (https://github.com/git/git) и Java (*).1021 * но сложная структура меня озадачила.
Есть ли способ реализовать функцию загрузки только объекта фиксации? Или как я могу помочь найти код ключа в исходном коде.
Если вы знаете, как это сделать, пожалуйста, дайте мне знать. Большое спасибо.
PS: Мне нужно скачать какой-нибудь файл .git
из github / gitlab (публичные репозитории). Но --filter=blob:none
в github recive warning: filtering not recognized by server, ignoring
. И API github имеют сильные ограничения.