2014-01-15 11 views
1

내 응용 프로그램에서 일부 사용자가 유효한 SVN 사용자인지 확인해야합니다. SVN 명령 줄 도구/Tortoise SVN Commndline 또는 Python을 사용하여이 작업을 수행하고 싶습니다. 나는 PySVN을 찾았지만 그 라이브러리에 현재 사용자를 인증 할 방법이 없다고 생각된다. 동일한 작업을 수행 할 수있는 방법을 제안하십시오. SVN 명령 줄 또는 파이썬을 사용하여 사용자 인증

답변

0

pysvn.Client.callback_*에 대한 설명서에서 봐, 그리고 당신은 당신이 가지고있는 방법이 일치하지 않는 경우 암호 및 오류 메시지를 표시 핸들을 제공하는 것을 볼 수 있습니다 감사합니다.

+0

예, 캐시에 사용자 이름 암호가없는 경우에만 해당 콜백이 호출됩니다. 사용자 이름 암호 정보를 제공하고 결과를 얻을 수있는 방법을 찾을 수 없습니다. 내가 틀렸다면 나를 바로 잡아주세요. –

0

pysvn을 사용하여 callback_get_login을 사용하여 인증 할 수 있습니다. documentation에 따르면

:

callback_get_login 각 시간 파괴라고는 저장소에 액세스하기 위해 영역에서 사용자 이름과 암호를 필요로하고 캐시 된 자격 증명이 없습니다.

+0

내 의견을 Steve Barnes의 대답을 참조하십시오. –

0

작동시키기가 매우 어려워 보입니다. 나는 다음과 같은 결과를 내놓았다 :

def get_prepared_svn_client(self, username, pwd): 
    client=pysvn.Client() 
    class OneAttemptLogin: 
     """ 
     if login failed, pysvn goes into infinite loop. 
     this class is used as callback; it allows only one login attempt 
     """ 
     def __init__(self, username, pwd): 
      self.attempt_tried=False 
      self.username=username 
      self.pwd=pwd 
     def __call__(self, x,y,z): 
      if not self.attempt_tried: 
       self.attempt_tried=True 
       return (True, self.username, self.pwd, False) 
      else: 
       return (False, "xx", "xx", False) 
    client.callback_get_login=OneAttemptLogin(username, pwd) 
    client.set_auth_cache(False) 
    client.set_store_passwords(False) 
    client.set_default_username('') 
    client.set_default_password('') 
    client.set_interactive(False) 
    return client 

을가 무엇을 :

  1. 는 한 시도 콜백을 사용합니다. pysvn은 동일한 자격증 명을 계속해서 시도 할 것이기 때문에 작동하지 않는다면 멈출 필요가 있습니다.
  2. 자격 증명이 유지되지 않습니다 (그렇지 않은 경우 당신이 그것을 생략 할 수 있습니다 원하는 동작) 캐시가 사용되지 않도록

  3. 지우기 기본 사용자 이름과 암호,

  4. 비활성화 프롬프트