Этот перевод был создан с помощью машинного обучения и может быть не на 100% точным. Просмотреть английскую версию

Использование git bundle для получения исходного кода I2P

Клонирование больших репозиториев через I2P с использованием git bundles и BitTorrent

Клонирование больших программных репозиториев через I2P может быть сложным, и использование git иногда может усложнить эту задачу. К счастью, иногда это также может упростить её. Git имеет команду git bundle, которая может использоваться для преобразования git-репозитория в файл, из которого git затем может выполнить клонирование, извлечение или импорт с расположения на вашем локальном диске. Объединив эту возможность с загрузками через bittorrent, мы можем решить наши оставшиеся проблемы с git clone.


Прежде чем начать

Если вы собираетесь создать git bundle, вы должны уже иметь полную копию git репозитория, а не mtn репозитория. Вы можете получить его с github или с git.idk.i2p, но поверхностный клон (клон, сделанный с –depth=1) не будет работать. Он завершится неудачно молча, создав то, что выглядит как bundle, но когда вы попытаетесь его клонировать, это не удастся. Если вы просто получаете предварительно созданный git bundle, то этот раздел к вам не относится.


Получение исходного кода I2P через Bittorrent

Кто-то должен будет предоставить вам торрент-файл или magnet-ссылку, соответствующую существующему git bundle, который они уже сгенерировали для вас. Недавний, правильно сгенерированный bundle основной ветки исходного кода i2p.i2p на среду, 18 марта 2020 года, можно найти внутри I2P в моем pastebin paste.idk.i2p/f/4hq37i .

После получения bundle вам потребуется использовать git для создания рабочего репозитория из него. Если вы используете GNU/Linux и i2psnark, git bundle должен находиться в $HOME/.i2p/i2psnark или, при работе как сервис в Debian, в /var/lib/i2p/i2p-config/i2psnark. Если вы используете BiglyBT на GNU/Linux, он вероятно находится в “$HOME/BiglyBT Downloads/”. Примеры здесь предполагают использование I2PSnark на GNU/Linux, если вы используете что-то другое, замените путь к bundle на каталог загрузок, предпочитаемый вашим клиентом и платформой.

Использование git clone

Клонирование из git bundle просто, достаточно:

git clone $HOME/.i2p/i2psnark/i2p.i2p.bundle

Если вы получаете следующую ошибку, попробуйте использовать git init и git fetch вручную.

fatal: multiple updates for ref 'refs/remotes/origin/master' not allowed

Использование git init и git fetch

Сначала создайте каталог i2p.i2p, чтобы превратить его в git-репозиторий.

mkdir i2p.i2p && cd i2p.i2p

Далее, инициализируйте пустой git репозиторий для получения изменений обратно.

git init

Наконец, извлеките репозиторий из bundle.

git fetch $HOME/.i2p/i2psnark/i2p.i2p.bundle

Заменить удаленный репозиторий bundle на upstream удаленный репозиторий

Теперь, когда у вас есть bundle, вы можете отслеживать изменения, установив remote на исходный upstream репозиторий.

git remote set-url origin git@127.0.0.1:I2P_Developers/i2p.i2p

Создание пакета

Сначала следуйте руководству Git для пользователей до тех пор, пока у вас не будет успешно выполнен --unshallow клон репозитория i2p.i2p. Если у вас уже есть клон, убедитесь, что вы выполнили git fetch --unshallow перед генерацией torrent-пакета.

После того как у вас это есть, просто запустите соответствующую цель ant:

ant git-bundle

и скопируйте полученный пакет в вашу папку загрузок I2PSnark. Например:

cp i2p.i2p.bundle* $HOME/.i2p/i2psnark/

Через минуту или две I2PSnark обнаружит торрент. Нажмите кнопку “Start”, чтобы начать раздавать торрент.

Was this page helpful?