Маршрутизація проксі для підмодулів 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, відмова репозиторію в доступі та невдале з’єднання з проксі — різні причини одного загального результату «оновлення підмодуля не вдалося».