Чтобы провести один HTTPS-клон через прокси, не меняя окружение процесса Python и не записывая глобальную настройку Git, передайте переменные в Repo.clone_from:

from git import Repo

repo = Repo.clone_from(
    'https://git.example/team/project.git',
    '/path/to/new-checkout',
    env={
        'http_proxy': 'http://proxy.example:8080',
        'https_proxy': 'http://proxy.example:8080',
    },
)

Используйте URL прокси напрямую в строках Python. Для публичного репозитория и маршрута, где разрешены публичные прокси, список HTTP-прокси даёт подходящие конечные точки. Кавычки группировки оболочки не входят в этот URL. URL репозитория SSH использует транспорт SSH, поэтому этому примеру нужен HTTPS-URL репозитория.

Если Git всё равно идёт другим путём

Отображение env обновляет окружение, наследуемое подпроцессом Git; оно не заменяет это окружение пустым. Проверьте унаследованные значения no_proxy на обход и собственную конфигурацию Git http.proxy, которая может переопределить соответствующую переменную окружения.

Вы также можете встретить примеры, передающие config в клон. Это вызывает опцию --config команды Git clone и записывает конфигурацию в новый репозиторий. Выбирайте это только когда настройка должна пережить данный процесс клонирования; конфигурация Git при клонировании против только при вызове объясняет разницу.

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