개요
- ReviewBoard는 오픈소스 코드 리뷰 툴임
- https://www.reviewboard.org/
- Pre-commit 리뷰를 지원하기 위해 명령줄에서 동작하는 클라이언트 툴을 제공함
- 클라이언트 툴이 변경된 코드의 diff를 생성해 서버에 올리는 방식임
- Perforce와 연동되고 pre-commit 리뷰를 지원하는 코드 리뷰 툴이 필요해서 테스트해 보게 되었음
서버 설치
You may want to add the trusted hosts and proxy to your config file.
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
python -m pip uninstall pip
easy_install -U pip
pip install p4python
easy_install -U ReviewBoard
rb-site upgrade installdir/apps/reviewboard/rb-sites/reviewboard/
- Repository 설정
- Perforce 설정하고 Advanced Settings - Encoding을 cp949 지정
- 이렇게 하면 ReviewBoard가 웹에서 diff를 디스플레이할 때 내부적으로 처리하는 코드페이지가 cp949가 되므로 코드의 한글 주석 등이 잘 보이지만, ReviewBoard 서버가 Perforce 서버에 명령어를 보낼 때 cp949로 명령어를 보내므로(왜 굳이???) 동작에 문제가 생긴다
- 별 수 없이 ReviewBoard의 파이썬 코드를 수정
- E:\Bitnami\reviewboardpowerpack-3.0.8-2\python\Lib\site-packages\p4.py의 run 함수 (line 594)
# if encoding is set, translate to Bytes
if hasattr(self,"encoding") and self.encoding and not self.encoding == 'raw':
result = []
for s in flatArgs:
result.append( s.encode(self.encoding) )
flatArgs = result
# if encoding is set, translate to Bytes
'''if hasattr(self,"encoding") and self.encoding and not self.encoding == 'raw':
result = []
for s in flatArgs:
result.append( s.encode(self.encoding) )
flatArgs = result'''
- E:\Bitnami\reviewboardpowerpack-3.0.8-2\python\Lib\site-packages\ReviewBoard-3.0.8-py2.7.egg\reviewboard\scmtools\perforce.py의 __init__ 함수 (line 270)
self.encoding = encoding
self.encoding = ''
- Apache 끄고 해당 소스의 컴파일된 바이너리인 p4.pyc 파일과 perforce.pyc 파일을 각각 지우고 Apache 재시작하면 반영됨
- 이것으로 서버 설치 완료
- 이후 설정은 알아서
클라이언트 설정
REVIEWBOARD_URL="http://rbserver:81/"
USERNAME="user"
PASSWORD="password"
REPOSITORY="MyProject"
REPOSITORY_TYPE="perforce"
P4_CLIENT="my-dev-work"