Клонирование крупных программных репозиториев по 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”, чтобы начать раздачу торрента.