GitPython のクローン 1 回を HTTP プロキシ経由で送る
プロキシ用の環境を Repo.clone_from に渡し、それを上書きしうる Git 設定を確認します。
Python プロセスの環境を変えず、グローバルな Git 設定も書かずに、HTTPS のクローン 1 回をプロキシ経由にするには、変数を 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 の一部ではありません。SSH のリポジトリ URL は SSH トランスポートに従うため、この例には HTTPS のリポジトリ URL が必要です。
Git が別の経路を使う場合
env のマッピングは Git サブプロセスが継承する環境を更新するだけで、その環境を空の環境に置き換えるわけではありません。継承された no_proxy の値で迂回がないか確認し、対応する環境設定を上書きしうる Git 自身の http.proxy 設定も確認してください。
クローンに config を渡す例も見かけます。これは Git clone の --config オプションを呼び出し、新しいリポジトリに設定を書き込みます。設定をこのクローン処理より長く残す必要がある場合にだけ選んでください。クローン時の Git 設定と、呼び出し時だけの設定の違いを説明しています。