Одна конфигурация Git может обслуживать два совершенно разных маршрута: внешний хост, доступный через одобренный прокси, и внутренний хост, доступный напрямую. Вам не нужно каждый раз править глобальное значение по умолчанию при смене репозитория.

Git поддерживает HTTP-конфигурацию для конкретных URL. Например:

[http]
    proxy = http://proxy.example:8080
[http "https://git.office.example/"]
    proxy =

Для внешнего публичного репозитория, где разрешены публичные прокси, список HTTP-прокси предлагает кандидатов для конечной точки по умолчанию. Пустое значение — это явное переопределение для совпадающего URL. Оно отличается от удаления того более конкретного ключа, что может снова открыть общий прокси.

Сопоставьте URL, который использует Git

Схема, имя хоста, порт, путь и необязательное имя пользователя участвуют в документированных правилах сопоставления. Не рассматривайте подраздел URL как общее выражение с подстановочными знаками оболочки. Более узкое правило пути может победить более широкое правило хоста.

Для просмотра подходящей конфигурации прокси только для чтения:

git config --get-urlmatch http.proxy https://git.office.example/team/project.git

Это проверяет сопоставление конфигурации. Это не сетевой тест и не доказывает, что маршрут доступен. Учитывайте также другие области конфигурации и соответствующие параметры среды.

Перенаправление — это не новое сопоставление конфигурации

Документация Git говорит, что сопоставляются URL, переданные непосредственно командам Git; URL, посещаемые из-за перенаправления, в этом сопоставлении не участвуют. Помните об этом ограничении, если первый хост перенаправляет загрузки в другое место.

Маршрут должен соответствовать и транспорту. Удалённый репозиторий SSH не управляется подразделом URL HTTP только потому, что тот же сервис предлагает веб-сайт HTTPS.

Используйте несколько осознанных правил, затем проверьте результат для показательных URL. Долгое накопление глобальных, локальных для репозитория и специфичных для URL записей прокси гораздо труднее осмыслить, чем сетевое различие, которое вы пытались выразить.

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