구글 태그

2018년 9월 5일 수요일

ReviewBoard 설치하기


개요


  • 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"

  • 이것으로 클라이언트 설치 완료