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

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

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

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

Кто-то должен предоставить вам torrent-файл или magnet-ссылку, соответствующую существующему git bundle, который они уже сгенерировали для вас. Когда у вас будет bundle, полученный через BitTorrent, вам нужно будет использовать git, чтобы создать из него рабочий репозиторий.

Использование 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-hackers/i2p.i2p

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

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

Как только у вас это будет, просто выполните соответствующую цель ant:

ant bundle

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

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

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