Как преобразовать `git:` urls to `http:` urls

Я работаю за http-прокси. Я пытаюсь клонировать дерево исходных текстов Android с помощью своего инструмента "repo".

Этот инструмент настаивает на использовании URL git://, даже если URL-адреса http:// также работают. В результате я не могу загрузить исходный код.

Можно ли заставить git всегда использовать http?

Изменить: мой http_proxy настроен правильно. Например, это работает:

git clone http://android.git.kernel.org/platform/manifest.git

Но это не так (errno = Connection time out):

git clone git://android.git.kernel.org/platform/manifest.git

Так что этот ответ не помогает мне.

Ответ 1

Здесь приведен пример перезаписи протокола по умолчанию для GitHub:

git config --global url.https://github.com/.insteadOf git://github.com/

Ответ 2

Я не знаю, как этот инструмент repo использует Git (и если вы можете настроить 'repo' для использования протокола http), но вы можете попытаться обмануть его, используя конфигурационную переменную url.<base>.insteadOf (см. git-config и git-fetch manpages).

Вы пытались использовать core.gitProxy для прохождения через брандмауэр, если это проблема с использованием протокола Git?

Ответ 3

У меня была та же проблема с рекурсивным получением подмодулей в репозитории git. Я за сумасшедшим брандмауэром, который не позволяет исходящие соединения на порту git. Некоторые подмодули подмодулей были закодированы как git://github.com/blah/blah.git. Это убило мое рекурсивное население подмодулей. Обходной путь следующий:

git config --global url."https://<GITUSERNAME>@".insteadOf git://

Это заменяет git:// на https://<GITUSERNAME>@ во всех URL-адресах репозитория подмодуля. Вам нужно заменить <GITUSERNAME> на ваше собственное имя пользователя git. Также обратите внимание, что требуется --global; просто добавление этой конфигурации в каталог базового репозитория не работает.

Ответ 4

Вы можете проверить в ~/.gitconfig, если вы перезаписываете SSH с помощью https://или наоборот.