Om één HTTPS-clone door een proxy te sturen zonder de omgeving van het Python-proces te wijzigen of een globale Git-instelling te schrijven, geef je de variabelen aan 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',
    },
)

Gebruik de proxy-URL rechtstreeks in de Python-strings. Voor een openbare repository en een route waar openbare proxy's zijn toegestaan, levert de HTTP-proxylijst kandidaat-eindpunten. Shell-groeperingsaanhalingstekens horen niet bij die URL. Een SSH-repository-URL volgt in plaats daarvan het SSH-transport, dus dit voorbeeld vereist een HTTPS-repository-URL.

Als Git toch een andere route neemt

De env-mapping werkt de omgeving bij die het Git-subproces erft; het vervangt die omgeving niet door een lege. Controleer geërfde no_proxy-waarden op een omleiding en controleer Git's eigen http.proxy-configuratie, die de bijbehorende omgevingsinstelling kan overschrijven.

Je kunt ook voorbeelden tegenkomen die config aan de clone meegeven. Dat roept de optie --config van Git clone aan en schrijft configuratie in de nieuwe repository. Kies dat alleen wanneer de instelling dit kloonproces moet overleven; Git-configuratie tijdens het klonen versus alleen bij de aanroep legt het verschil uit.

Gerelateerde artikelen