ViewVC는 Subversion, CVS를 웹에서 간편하게 볼 수 있게 해주는 도구입니다. 원래는 ViewCVS였는데 Subversion을 지원하기 시작하면서 이름이 바뀌었습니다.
이번에는 윈도우에서 아파치와 Mod Python을 이용하여 ViewVC를 사용하는 방법을 다루었습니다.
처음에 제가 먼저 사용해 보려고 했을 때 CGI 모드와 Stand Alone 모드는 잘 동작했는데, 유독 Mod Python으로는 동작이 잘 되지 않았습니다. handler.py에서 path를 잘 받아오지 못해서 모듈을 못찾는 것이었습니다. 이 부분은 문서에 포함시켰습니다.
그리고 로그는 UTF-8로 인코딩 되어 있기 때문에 잘 나오는데, 소스 안에 있는 한글 주석과 diff를 했을 때, blame을 했을 때 한글이 깨지는 것, 시간을 UTC에서 한국 표준시 표시하도록 수정한 패치와, 패치된 파일도 첨부하였습니다. 패치된 소스는 저장소에서도 확인 할 수 있습니다.
enscript 사용하여 소스코드 컬러링(Syntax highlighting) 설정하는 방법도 설명하였습니다.
http://www.pyrasis.com/main/SubversionWithViewVCForWindows
TAG Apache,
Enscript,
Mod Python,
Subversion,
ViewCVS,
ViewVC,
Windows,
서브버전,
아파치,
윈도우,
파이썬,
한글,
한글 패치


댓글을 달아 주세요
한글 문제 인데요.. 가이드에 있는 패치된 3개의 파일을 viewVC설치된폴더/lib 에 덮어쓰면 되는건가요? 아파치 재시작 하고 확인 해봐도 달라지진 않던데..
네.. blame.py, viewvc.py는 lib에, handler.py는 bin/mod_python에 덮어 쓰면 됩니다.
아파치를 재시작 해도 안되면, viewvc 디렉토리에 확장자가 pyc인 파일을 전부 지우고 아파치를 재시작 해보세요.
pyc 를 전부 삭제하고, 아파치 재시작 한후 웹에 접속을 해봤지만 똑같았습니다..
pyc 란 파일이 py 가 만든 바이너리 파일인거 같은데.. cgi 가 처음 호출되면 py 파일들이 컴파일되서
새로운 pyc 가 생겨야 하는거 아닌가요??
삭제후 웹에 접속했는데 pyc 는 생기질 않네요;;
참, 제가 사용하는건 svn 이 아닌 cvs 입니다
아..그리고 혹시나 해서 드리는 말씀인데.. 서버가 윈도우 일경우에 해당하는 글인가요;;??
hp ux 에서 돌리는 중인데 저는..
윈도우가 아니라도 다 적용되는 패치고 CVS, Subversion 둘다 됩니다.
제가 보기에 한글이 안나오는 것은 패치 문제가 아니라 설정 문제로 보입니다.
설정을 다시 한번 확인해보시고, 브라우저에서 페이지를 볼 때 인코딩을 UTF-8로 맞춰서 해보세요.
설정 파일중 인코딩을 다른 타입으로 하는 파일이 있어 수저을 하니 되네요.. 자세한건 정리가 되는데로 올리겠습니다..
한가지더 궁금한게.. 위에 링크 걸어 주신 윈도우에서 설치하고 사용하기 부분중 diff 에 관한 건데요..
viewvc 에서 diff 를 하려고 하면 diff 를 찾을수 없다고 나오네요.. 찾아봐도 따로 경로를 설정하고 그런건 없는거 같은데.. 분명 gnu diff 설치 되어 있구요.. 설치된 경로 환경변수에 패스도 잡혀 있습니다..
다른 설정이 필요한 건가요..?
윈도우에서 설치를 하셨다면 환경변수 패스를 잡았다고 하더라도 재부팅을 하지 않으면 아파치에서 인식을 하지 못하기 때문에 적용이 되지 않습니다. 재부팅을 하고 다시 시도를 해보세요.
그리고 명령 프롬프트에서 diff가 잘 실행되는지 살펴보세요.
앗..블러그를...
RSS구독하고 갑니다. ^^
좋은 글 고맙습니다. 올려주신 내용대로 ViewVC까지 설치해서 기본 동작은 되는데 diff 관련 기능을 실행하면 다음과 같은 에러가 납니다.

게 수정해보라고 하길래 따라해봤는데도 잘 않 되는군요.
"라고 뜹니다. 어디에 캐쉬라도 저장된건지... )
조금만 도와주실 수 있을까요
(프롬프트에서 diff 잘 됩니다)
An Exception Has Occurred
Python Traceback
Traceback (most recent call last):
File "C:\Program Files\viewvc-1.0.4\lib\viewvc.py", line 3678, in main
request.run_viewvc()
File "C:\Program Files\viewvc-1.0.4\lib\viewvc.py", line 388, in run_viewvc
self.view_func(self)
File "C:\Program Files\viewvc-1.0.4\lib\viewvc.py", line 2748, in view_diff
fp = request.repos.rawdiff(p1, rev1, p2, rev2, diff_type, diff_options)
File "C:\Program Files\viewvc-1.0.4\lib\vclib\svn\__init__.py", line 691, in rawdiff
return vclib._diff_fp(temp1, temp2, info1, info2, args)
File "C:\Program Files\viewvc-1.0.4\lib\vclib\__init__.py", line 236, in __init__
self.fp = popen.popen("diff", args, "r"
File "C:\Program Files\viewvc-1.0.4\lib\popen.py", line 71, in popen
phandle, pid, thandle, tid = win32popen.CreateProcess(command, hStdIn, hStdOut, hStdErr)
File "C:\Program Files\viewvc-1.0.4\lib\win32popen.py", line 84, in CreateProcess
si # startupinfo
error: (2, 'CreateProcess', '\xc1\xf6\xc1\xa4\xb5\xc8 \xc6\xc4\xc0\xcf\xc0\xbb \xc3\xa3\xc0\xbb \xbc\xf6 \xbe\xf8\xbd\xc0\xb4\xcf\xb4\xd9.')
google을 뒤져보니 __init__.py에서 self.fp = popen.popen("C:/Program Files/GnuWin32/bin/diff.exe", args, "r"
(이 부분을 수정하고 pyc 파일 다 지우고 아파치 다시 실행해도 에러 메시지에는 계속 "self.fp = popen.popen("diff", args, "r"
시스템 환경변수의 PATH에 C:\\Program Files\\GnuWin32\\bin으로 설정해주시고, popen.popen("diff", args, "r"
로 되돌린 후 재부팅하고 다시 해보세요.
시스템 환경변수 PATH를 다시 설정하고 윈도우 재부팅했지만 동일한 오류가 반복되네요. ㅜㅡ 참 저는 python 2.5가 이미 설치돼 있어서 다른 프로그램들은 2.5에 맞춰서 설치했습니다. 이게 문제가 되는 걸까요.
그러고 보니 C:/Program Files/GnuWin32/bin/diff.exe 이건 왜 슬래쉬로 하셨나요?
C:\\Program Files\\GnuWin32\\bin\\diff.exe 역슬래쉬로 바꿔서 다시 해보세요, 파이썬 에러 메시지에는 다 경로가 역슬래쉬로 나오는군요.
안되면 그냥 2.4로 하세요.
^^