Использование git bundle для получения исходного кода I2P
Клонирование больших репозиториев программного обеспечения через I2P может быть сложным, а использование git иногда может усложнить эту задачу. К счастью, иногда оно может и облегчить задачу. В Git есть команда git bundle
, которую можно использовать для превращения git-репозитория в файл, который git может затем клонировать, получить или импортировать с локального диска. Объединив эту возможность с bittorrent-загрузками, мы можем решить наши оставшиеся проблемы с помощью git clone
.
Прежде чем начать
Если вы собираетесь создать git-бандл, вы должны уже иметь полную копию репозитория git, а не репозитория mtn. Вы можете получить ее с github или с git.idk.i2p, но неглубокое клонирование (клонирование с -depth=1) не работает. Будет выглядеть как бандл, но когда вы попытаетесь клонировать, это не удастся. Если вы просто извлекаете предварительно сгенерированный git-пакет, то этот раздел к вам не относится.
Получение исходного кода I2P через Bittorrent
Кто-то должен будет предоставить вам торрент-файл или magnet-ссылку, соответствующую существующей git-сборке
, которую он уже сгенерировал для вас. Последний, правильно сгенерированный бандл основного исходного кода i2p.i2p по состоянию на среду, 18 марта 2020 года, можно найти внутри I2P на моем pastebin paste.idk.i2p/f/4hq37i.
После того, как у вас есть бандл, вам нужно использовать git для создания из него рабочего репозитория. Если вы используете GNU/Linux и i2psnark, git-пакет должен быть расположен в $HOME/.i2p/i2psnark или, как сервис в Debian, /var/lib/i2p/i2p-config/i2psnark. Если вы используете BiglyBT в GNU/Linux, он, вероятно, находится по адресу "$HOME/BiglyBT Downloads/". Приведенные здесь примеры предполагают использование I2PSnark на GNU/Linux, если вы используете что-то другое, замените путь к пакету на каталог загрузки, предпочтительный для вашего клиента и платформы.
Использование git clone
Клонирование из git-пакета очень просто:
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
И извлеките репозиторий из бандл.
git fetch $HOME/.i2p/i2psnark/i2p.i2p.bundle
Replace the bundle remote with the upstream remote
Теперь, когда у вас есть бандл, вы можете следить за изменениями, установив remote на источник репозитория upstream.
git remote set-url origin git@127.0.0.1:i2p-hackers/i2p.i2p
Generating a Bundle
Сначала следуйте руководству Git для Users, пока вы успешно --unshallow
клон клона репозитория i2p.i2p. Если у вас уже есть клон, убедитесь, что вы запустили git fetch --unshallow
перед генерацией торрент-пакета.
После этого просто запустите соответствующую цель:
ant git-bundle
и скопируйте полученный пакет в каталог загрузок I2PSnark. Например:
cp i2p.i2p.bundle* $HOME/.i2p/i2psnark/
Через минуту или две I2PSnark подхватит торрент. Нажмите на кнопку "Старт", чтобы начать раздачу торрента.