2010-07-24 3 views
1

여기 내 코드가 pysvn에서 사용자 이름과 passwd를 캐시하는 방법

#!/usr/bin/python 
# -*- coding:utf-8 -*- 
import sys 
import pysvn 
def main(): 
    client = pysvn.Client() 
    client.callback_get_login = lambda realm, username, may_save:(True, "myusername", "mypasswd", True) 
    print client.cat('http://svn.mydomain.com/file1.py') 
    print client.cat('http://svn.mydomain.com/file2.py') 
    return 0 

if __name__ == "__main__": 
    sys.exit(main()) 

내가이 pysvn 두 HTTP 세션을 설립 것으로 나타났습니다하지만, 각 세션에서, 그것은 먼저 "인증"헤더없이 OPTION 방법을 시도, 서버 응답 401 후에 "Authorization"헤더를 보냈습니다.

두 개의 URL이 동일한 도메인에 있으므로 왜 pysvn이 하위 세션에서 직접 username/passwd를 보내지 않으십니까?

너무 많은 401이 내 svn 서버를 응답하지 못하게 만들었 기 때문에이 질문이 있습니다. 그리고 일식에서 svnkit 잘 작동하고 자동으로 "인증"헤더를 보냅니다.

편집 : 알렉스 마르 텔리에 :

알려진 - - 수 - 쓰기로 설정 해줄 당신이 호출 할 때 클라이언트에 명시 적 경로를 전달하려고합니다.

그것이 서빙 두 파일

두 응답의 영역이 동일한 서로 다른 영역을 보내는 것일 수있다되지 시도.

pysvn이 libsvn에서 "svn_client_cat2()"를 호출 한 것처럼 보입니다.이 함수는 동일한 URL과 동일한 영역에 대해서도 username/passwd를 캐시하지 않습니다. 그래서 더 이상이 문제를 해결할 수 없다고 생각합니다. libsvn에 새로운 인터페이스를 추가하고 username/passwd를 캐시하면 향후 작업에 많은 시간이 걸릴 것입니다. 어쨌든 고마워!

답변

1

(버그 가설 1 번) 구성 디렉토리가 쓰기 가능하지 않을 수 있습니다. Client으로 전화 할 때 명시 적 경로를 쓰기 가능 설정 디렉토리에 전달하십시오.

그게 도움이되지 않는다면 (버그 가설 번호 2) 서빙이 두 파일에 대해 서로 다른 영역을 전송하고있는 것일 수 있습니다 (서버가 동일한 도메인에서 서버를 중지 시키지는 않지만 서버 구성 부분에서 고유 한 구성 선택 또는 구성 오류가 발생하지만 "너무 많은 401"으로 인해 실패하는 서버는 어쨌든 특이한 점을 가지고 있으므로 이미 용의자입니다 .-).

관련 문제