Per enviar un clon HTTPS a través d'un proxy sense canviar l'entorn del procés de Python ni escriure cap paràmetre global de Git, passa les variables a 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',
    },
)

Utilitza l'URL del proxy directament a les cadenes de Python. Per a un repositori públic i una ruta on es permeten proxys públics, la llista de proxys HTTP ofereix punts finals candidats. Les cometes d'agrupació del shell no formen part d'aquesta URL. Una URL de repositori SSH segueix el transport SSH, així que aquest exemple requereix una URL de repositori HTTPS.

Si Git encara agafa una altra ruta

El mapatge env actualitza l'entorn que hereta el subprocés de Git; no el substitueix per un entorn buit. Revisa els valors heretats de no_proxy per si hi ha una excepció i la configuració pròpia de Git http.proxy, que pot substituir el paràmetre d'entorn corresponent.

També pots trobar exemples que passen config al clon. Això invoca l'opció --config de Git clone i escriu configuració al repositori nou. Tria-ho només quan el paràmetre hagi de sobreviure aquest procés de clonació; la configuració de Git en temps de clonació enfront de només en la invocació n'explica la diferència.

Articles relacionats