2013-09-03 1 views
2

Git::Repository과 함께 비밀번호를 사용할 수 있습니까? 나는 작동하도록 보인다 run() α- 함수 ($repository->run('pull', $git_pw);)의 인수에 암호를 추가하는 시도했지만, 일을하고 내게로 보일 수 없다Git에서 비밀번호 사용 : 리포지토리

fatal: '[PASSWORD]' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly at ./list_commits.pl line 33 

같은 경고를 제공하지 않습니다 유용한 정보 찾기 Documentation

답변

3

사용자 상호 작용을 에뮬레이션하는 영역에 들어서고 있습니다. :-) git에 대한 좋은 점은 결국 프로그램과 대화하기로되어 있다는 것입니다.

$repository->run('pull', { input => "$git_pw\n" }); 

를하지만 암호가 너무 일찍 전송 될 수 있기 때문에, 예를 들어, 실패 할 가능성이 높다입니다 :

어쨌든, 당신의 문제를 해결하기 위해, 나는이 작업을 수행하려고 할 것입니다. 문서를 업데이트하는 경우에만 시도한 결과에 관심이 있습니다. (저는 Git :: Repository의 저자입니다.)

완전히 다른 해결책은 공개 키와 ssh-agent이고 암호를 입력 할 필요가 없습니다.

+0

당신은 절대적으로 옳습니다. 입력을 너무 일찍 보내고 있기 때문에 암호는 아무 것도 나오지 않습니다 : -/public-key/ssh-agent'-solution을 조금 더 자세히 설명 할 수 있습니까? :) – Vince

+1

'ssh : // user @ host : 1234/srv/git/example'과 같은 원격 URL을 가정하면, 원격'host'에'user' 계정을 설정하여 공개 키 인증을 허용 할 수 있습니다 (' ~/.ssh/authorized_keys' 파일). 가장 쉬운 방법은 빈 암호 문구가있는 공개 키 ('ssh-keygen')를 사용하는 것입니다 (배치 스크립트에서 자동으로 사용할 수 있도록). – BooK

0

ssh 프로그램의 자식 설정 GIT_SSH을 비밀번호를 묻지 않는 것으로 바꿀 수 있습니다.

Net::OpenSSH을 사용하면 SSH를 통해 원격 호스트에 쉽게 연결 한 다음 스크립트를 사용하여 해당 연결을 통해 git 원격 명령을 실행할 수 있습니다.

git과 함께하는 방법을 보여주는 Net::OpenSSH 배포본에 예제 스크립트가 포함되어 있습니다. Git::Repository과 함께 사용하도록 수정하는 것은 매우 쉽습니다.

샘플 프로그램은 here이고 슬레이브 ssh 프로그램은 here입니다 ($PATH에서 접근 가능해야 함).

업데이트 : 암호 인증 대신 가능하면 공개 키 인증을 사용해야합니다.

+0

나는 publickey-authentication을 사용할 것이다. – Vince

관련 문제