Как изменить функцию Git clone

#git #github #jgit

#git #github #jgit

Вопрос:

Поскольку это необходимо для моей работы, мне нужно загрузить только объект фиксации в ./git/objects из удаленного репозитория git. /.git/ метаданные содержат некоторую полезную информацию. Но в файл pack включите объект commit / tree / blob. объекты tree / blob слишком велики, поэтому объект tree / blob не следует загружать. Возможно, мне нужно перестроить клиент git или написать скрипт на python.

Я видел несколько проектов (например https://github.com/lijiejie/GitHack ).Он загружает файлы шаг за шагом, разбирая index файл, и, наконец, объекты commit / tree / blob разделяются после загрузки.

введите описание изображения здесь

Но для этого метода требуется доступ к .git папке через HTTP, и вы не можете загрузить индексный файл непосредственно с github.

Я не понимаю, как github взаимодействует с клиентом git.

Я попытался взглянуть на базовый исходный код для C(https://github.com/git/git ) и Java(https://github.com/eclipse/jgit), но сложная структура озадачила меня.

Есть ли какой-либо способ реализовать функцию загрузки только объекта фиксации? Или как я могу помочь себе найти ключевой код в базовом исходном коде.

Если вы знаете, как это сделать, пожалуйста, дайте мне знать. большое вам спасибо.

PS: Мне нужно загрузить некоторый файл .git из github / gitlab (общедоступных репозиториев). Но --filter=blob:none в github получите warning: filtering not recognized by server, ignoring . И API github имеют строгие ограничения.

Комментарии:

1. какое-либо использование так называемого «объекта фиксации»?

2. фиксация содержит информацию о фиксации. например: git cat-file -p 171a2e1 . эта команда может отображать информацию в объекте фиксации.

3. вы настраиваете веб-сервер, и он может запускать команды git локально (на сервере git), поэтому ваш клиент может получать журналы, не нужно ничего загружать. разве это не более облегченно?

4. спасибо за ваше предложение. но мне нужно выполнить некоторую аналитическую работу в github / gitlab. Итак, это нужно в общедоступной сети и достаточно быстро.

5. Полное время клонирования слишком велико, когда мне приходится обрабатывать информацию по всей сети. А API github ограничит количество посещений.