Маршрутизация прокси для подмодулей Git
Проверяйте URL подмодулей, типы транспорта и настройки репозитория, когда основной checkout Git работает через прокси, а вложенные репозитории — нет.
Успешное клонирование основного репозитория не проверяет его подмодули. Подмодуль — это другой репозиторий Git, возможно на другом хосте и использующий другой транспорт.
Начните с чтения объявленных URL:
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
Родительский репозиторий, полученный по HTTPS, может содержать подмодуль, использующий git@host:. Настройка HTTP-прокси не настраивает это SSH-соединение. Относительные URL нужно разрешать относительно подходящего remote суперпроекта, а не любого веб-адреса, предположенного по имени проекта.
Локальные настройки репозитория имеют область действия
Локальная запись http.proxy относится к репозиторию, в чьём файле конфигурации она находится. Проверка только родительского репозитория не показывает все настройки внутри дочернего репозитория.
Для временной замены HTTPS-прокси при рекурсивном обновлении конфигурацию Git из командной строки можно передать этому вызову:
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
Замените пример конечной точки. Для публичных HTTPS-подмодулей на маршруте с разрешёнными публичными прокси список HTTP-прокси предлагает возможные адреса. Это не превращает SSH-URL в HTTPS; если маршрут неожиданен, проверьте более специфичную URL-конфигурацию.
Когда зарегистрированный URL изменился
Git регистрирует конфигурацию подмодуля локально при инициализации. Если URL подмодуля в проекте изменился, сравните текущее объявление с локальным значением прежде, чем считать прокси неисправным. Синхронизация обновляет зарегистрированные URL из объявления проекта; сама она не является сетевой настройкой прокси.
При вложенных сбоях запишите точный путь подмодуля и remote из ошибки. Рекурсивная операция может обращаться к нескольким хостам; внутреннему может требоваться прямое исключение, а публичный использует прокси.
Отделяйте ошибки транспорта от ошибок репозитория. Отсутствующий commit, отказ доступа и сбой соединения с прокси — разные причины результата «обновление подмодуля не выполнено».