네이티브 Git은 프록시를 통해 작동하지만 JGit은 작동하지 않는다
JGit은 자체 지원 전송 설정을 가진 Java 구현입니다. 네이티브 Git의 http.proxy 항목은 모든 Git 클라이언트에 통용되는 설정이 아닙니다.
같은 저장소가 터미널에서는 git clone으로 작동하지만 JGit을 사용하는 애플리케이션에서는 실패합니다. 이는 두 구현 사이의 비교이며, 반드시 같은 클라이언트의 정상 사본과 망가진 사본 사이의 비교는 아닙니다.
JGit 구성 참조에 따르면 프록시 구성은 java.net.ProxySelector을 통한 Java의 표준 메커니즘을 사용합니다. 두 클라이언트가 Git 구성 파일을 이해한다는 이유만으로 네이티브 Git의 모든 HTTP 옵션이 구현되어 있다고 가정하지 마십시오.
JGit을 포함하는 애플리케이션, 그 버전, 선택된 HTTP 전송을 확인하십시오. 호스트 애플리케이션은 JGit의 독립적인 기본값을 넘어서는 설정이나 동작을 제공할 수 있습니다.
그다음 해당 프로세스에 보이는 Java 프록시 구성을 살펴보십시오. URLConnection 기반 HTTP 전송이라면 그것이 사용하는 JVM 호스트 및 포트 속성을 확인하십시오. 애플리케이션이 시작된 뒤 무관한 터미널에 입력한 속성은 실행 중인 JVM을 다시 구성할 수 없습니다. IDE의 네이티브 Git 작업과 JGit 작업도 서로 다른 경로를 사용할 수 있습니다.
프록시 인증은 경로 선택과 분리해 두십시오. 호스트와 포트를 지정하는 Java 프록시 속성은 프록시 비밀번호 방식을 자동으로 구현하지 않습니다. 호스트 애플리케이션이 지원하는 인증 메커니즘을 사용하십시오.
유용한 질문은 “이 JGit 요청이 어떤 프록시를 선택했는가?”이며 “내 Git 구성에 프록시 줄이 있는가?”가 아닙니다. 네이티브 Git의 성공은 값진 비교이지만, 구현에 특정된 그 질문에 답하지는 않습니다.