Um einen HTTPS-Klon durch einen Proxy zu senden, ohne die Umgebung des Python-Prozesses zu ändern oder eine globale Git-Einstellung zu schreiben, übergeben Sie die Variablen an 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',
    },
)

Verwenden Sie die Proxy-URL direkt in den Python-Strings. Für ein öffentliches Repository und einen Weg, auf dem öffentliche Proxys erlaubt sind, liefert die HTTP-Proxy-Liste mögliche Endpunkte. Shell-Gruppierungs-Anführungszeichen gehören nicht zu dieser URL. Eine SSH-Repository-URL folgt stattdessen dem SSH-Transport, dieses Beispiel benötigt also eine HTTPS-Repository-URL.

Wenn Git noch einen anderen Weg nimmt

Das env-Mapping aktualisiert die Umgebung, die der Git-Subprozess erbt; es ersetzt diese Umgebung nicht durch eine leere. Prüfen Sie geerbte no_proxy-Werte auf eine Umgehung und prüfen Sie Gits eigene http.proxy-Konfiguration, die die entsprechende Umgebungseinstellung überschreiben kann.

Ihnen können auch Beispiele begegnen, die config an den Klon übergeben. Das ruft die Option --config von Git clone auf und schreibt Konfiguration in das neue Repository. Wählen Sie das nur, wenn die Einstellung diesen Klonprozess überdauern soll; Git-Konfiguration zur Klonzeit gegenüber nur beim Aufruf erklärt den Unterschied.

Ähnliche Artikel