pysvn 을 처음 설치하고 제일 단순한 업데이트 코드를 돌리면 다음과 같은 에러가 발생합니다


import pysvn
c = pysvn.Client()
c.update(".")


결과
Traceback (most recent call last):
  File "D:\builder\main.py", line 17, in <module>
    c.update(".")
pysvn._pysvn_2_5.ClientError: Can't create tunnel: 吏€?뺣맂 ?뚯씪??李얠쓣 ???놁뒿?덈떎.

이런 결과가 나오는 이유는 출력문이 utf8 이기 때문입니다 (-_-);

유닉스 계열에서는 이미 utf8 이 천하를 통일했지만
윈도우 계열에서는 아직 mbcs 한글로 이야기하면 cp949 가 디폴트 인코딩인 상태입니다.

그러므로 제대로 된 문자열을 보기 위해서는 번역기를 하나 달아줘야 합니다.


import sys
import pysvn

class Translator:
def __init__(self, out):
self.out = out

def write(self, msg):
self.out.write(msg.decode("utf8").encode("mbcs"))

console = sys.stdout
sys.stdout = Translator(console)
sys.stderr = Translator(console)

c = pysvn.Client()
c.update(".")


결과
  File "D:\builder\main.py", line 16, in <module>
    c.update(".")
pysvn._pysvn_2_5.ClientError: Can't create tunnel: 지정된 파일을 찾을 수 없습니다.

자-_- 그럼 이제 이글의 핵심문제인 터널을 만들 수 없다는 걸 해결해봅시다.

pysvn 은 ssh+svn 프로토콜로 통신을 할때 ssh.exe 를 필요로 합니다.

유닉스계열에서는 ssh 가 기본으로 설치되어있지만, 윈도우에서는 그렇지 않습니다.

음 그럼 어떻게 해야 할까요 (-_-)?

pysvn 은 TortoiseSVN 에서 나온 제품입니다.

TortoiseSVN 을 보면 TortoisePlink.exe 란 프로그램이 있는데

이것이 바로 ssh 프로그램입니다.

이 파일을 하나 복사해서 ssh.exe 로 이름을 변경한후 c:\windows 에 복사해두면

위의 스크립트는 아름답게 실행되게 됩니다 ~(-_-)~



이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/02/04 22:14 2009/02/04 22:14