Успешное клонирование основного репозитория не проверяет его подмодули. Подмодуль — это другой репозиторий 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, отказ доступа и сбой соединения с прокси — разные причины результата «обновление подмодуля не выполнено».

Похожие статьи