2010-04-12 2 views
5

저는 Python과 PySVN을 처음 접했고 pysvn을 사용하여 SVN 저장소를 내보내려고합니다. 내 코드는 다음과 같습니다.PySVN으로 로그인 실패를 잡는 방법?

#set up svn login data 
def svn_credentials (realm, username, may_save): 
    return True, svn_login_name, svn_login_password, False 

#establish connection 
svn_client = pysvn.Client() 
svn_client.callback_get_login = svn_credentials 

#export data 
svn_client.export('server-path-goes-here', 'client-path-goes-here', force=True) 

잘 작동하지만 어떤 암호가 잘못되었거나 사용자 이름을 알 수없는 경우이 코드가 표시됩니다. SVN 측에서 사용자 로그인 프롬프트가 표시되고 있다고 생각되지만 callback_get_login을 확인하는 방법은별로 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

SSH를 사용하고 있습니까? 어떤 경우에는 로그인 프롬프트를 표시하는 SSH이고 PySVN은 그 일에 관해 많은 것을 할 수 없습니다. 당신은 키보드 대화 형 프롬프트를 비활성화하기 위해 클라이언트 측에 SSH 구성으로 장난을 시도 할 수 :

http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Configuring_the_Server_and_Client.html

+0

실제로는 https로 Unfuddle을 호출하기 때문에 서버 측에서 할 수있는 일은 제한적입니다. (Unfuddle의 API가 살펴볼만한 가치가 있는지 궁금하게 생각할 수도 있지만 ...) 흠 – Geoff

+0

@ars 죄송합니다. 해당 페이지를 사용할 수 없습니다. – umpirsky

4

을 자격 증명이 자격 증명이 여전히 다시 호출 잘못된 경우 잘못된 pysvn가 콜백을 호출하는 경우, 다시 한 번 자격증이 정확해질 때까지 그렇게 할 것입니다.

자동 스크립트의 경우 콜백을 설정하지 말고 pysvn.Client 인스턴스에서 set_default_username 및 set_default_password를 호출하여 기본 사용자 이름과 암호를 설정하는 것이 좋습니다.

잘못된 자격 증명을 설정하면 pysvn에서 catch 할 수있는 콜백을 설정하고 의미있는 오류 메시지로 바뀌는 예외를 전파하게됩니다.

+1

나는 pysvn에 관하여 이것을 절대적으로 싫어한다. 로그인이 실패했다는 사실을 전혀 감지하지 못합니다. 인스턴스에 전달조차되지 않기 때문에 적어도 일부 상태 변수를 설정할 수 있습니다. – spuriousdata

+0

set_default_username 및 set_default_password를 제거하고 callback_get_login을 제거하면 "callback_get_login required"오류가 발생합니다. 어떤 생각? – umpirsky

+0

[set_interactive] (http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_client_set_interactive)를 사용하여 대화 형 플래그를 False로 설정하여이 작업을 수행했습니다. set_default_username 및 set_default_password에 지정된 유효한 데이터와 함께 클라이언트는 프롬프트없이 작동합니다. –

관련 문제