GitPython 클론 하나를 HTTP 프록시로 보내기
프록시 환경을 Repo.clone_from에 넘기고, 이를 덮어쓸 수 있는 Git 설정을 확인합니다.
Python 프로세스의 환경을 바꾸지 않고 전역 Git 설정도 쓰지 않으면서 HTTPS 클론 하나를 프록시로 보내려면 변수를 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 설정과 호출 시점에만 적용되는 설정의 차이를 설명합니다.