Trac-Perforce 삽질기

회사에 입사한 이후에 소스코드 관리시스템 (SW Configuration Management system; SCM)으로 subversion; svn 을 사용해 왔다. 최근에 서로 다른 리비젼 간 혹은 동시 변경하다가 소스코드 합치기;merge 문제로 몇 번 삽질을 하고나서 몇 가지 외부 merging 툴을 사용해봤는데 성능이 좋으면서도 한글코드 문제가 없는 툴을 찾을 수가 없었다.
그러다가 상용 소스코드 관리시스템인 퍼포스;perforce 로 넘어갈 생각을 하고 – 다행히도 현재 속해있는 파트에 라이센스가 좀 남더라 – trac 과 연동이 제대로 되나 확인을 시도해봤다.
우선 필요한 파일들을 설치했다. Trac-hacks 에서 perforce-plugin과 이를 사용하기 위한 몇 가지 라이브러리들의 링크를 따라가서 설치했다. 대략,

  • PyPerforce
  • PyProtocols
  • setuptools (위의 둘을 설치하기 위한 것)
  • Trac 0.10 (물론 0.9 용도 있고 0.11dev 에서 도는 플러그인도 있긴하다)

이런 애들을 받고 설치. (위의 둘은 setup tools를 설치하고 ez_setup 유틸리티로 egg 파일을 설치해주면 끝)
설치를 끝내고 설정을 시작했다. 홈페이지에 있는 설명에서 해줘야하는 설정은 (설치 과정 자체를 제외하고) 다음 항목을 trac.ini 에 추가하는 것.

[trac]
repository_type = perforce
repository_dir = p4://user:password@perforce:1666/path_of_depot?unicode=0 or 1

[components]
p4trac.* = enabled


그렇지만 이것만으로 tracd 는 뜨긴하는데 페이지가 제대로 나오지 않는다. 웹브라우져로 접속하면 대충,

Missing ‘port’ value in [perforce] config section.

라는 에러메시지와 함께 python stack trace를 즐~겁게 감상해야한다. 그러니 다음 항목을 trac.ini 에 추가해주자.

[perforce]
port = …

…에 해당하는 항목을 채워줘야하는 것. 여기서 port 를 perforce 서버의 포트로 쓰는 순간 당신은 패배한다. (퍼포스 클라이언트를 자주 설치해본 사람이라면 안 속았을지도 모른다 Orz)

port = 1666

정도로 채워넣었다고 치자. 그러면 이런 에러가 섞인 스택 트레이스를 구경하게 된다.

TracError. Could not connect to Perforce repository.

해당하는 실제 python 코드는 이런 부분.

try:
from trac import __version__ as tracVersion
p4.connect(prog='Trac',
version=tracVersion)
except ConnectionFailed:
raise TracError(
message="Could not connect to Perforce repository.",
title="Perforce connection error",
)

코드를 열어보면 아예 연결 시도에서 실패했다는 사실을 알게 되는데 … 여기서 뭔가 좀 미심쩍다고 느끼고 코드를 파 내려갔다. PyPerforce의 Connection 클래스에 이런게 보인다.

@attribute
def port():
doc="""The Perforce server address and port number. ... (하략)
 

server address and port number.

…그렇다. port가 보통 생각하는 포트 번호가 아닌 것이다 -_-;;;;;
해당하는 부분을

[perforce]
port = server_address:1666

으로 설정해주니 연결이 된다. 그 이후에도 Connection 생성 이후 초기 몇 가지 연산에서 [perforce] 항목에 몇 가지 사항을 추가해줘야 한다. 대략 user, password, unicode (1혹은 0으로) 를 설정해 줘야 한다. (몇 가지 더 설정할 수 있는게 있지만 모두 optional한 기능이다)
이름 짓는 일은 많은 작업들 … 특히 프로그래밍에선 매우 중요하다는 것을 깨닫게 해준 하루다. 무심코(?)지은 이름 하나 덕에 저게 잘못된 것일거라곤 꿈에도 상상하지 못하는 사태를 불러일으켰다.
퍼포스 잊지 않겠다(퍼포스 클라이언트 설치 화면에서도 Port 라고 되어있는 칸에 주소:포트 를 입력하더라 -_-;;; )

Published by

rein

나는 ...

3 thoughts on “Trac-Perforce 삽질기”

  1. 어제(2007-01-03)부로 리비젼이 올라갔다. 올라간 버젼을 받아서 테스트 해본 결과,

    • trac 0.10.4 버젼이면 0.10 브랜치 용으로 따로 받아서 설치하면 예제의 옵션만으로 잘돈다 -_-;;
    • trac 0.11 의 경우 위 포스팅 처럼 따라가야 한다.

    다만 현재 스테이블로 나와있는 녀석의 경우 trac 0.10.4 에서 정상동작하지 않아서 리비젼을 올려야 한다.

  2. 좋은 정보 감사합니다. 그런데 SCM의 약자가 제가 알기에는 S/W Configuration Management 로 알고 있는데, 혹시 제가 잘못 알고 있는게 아니라면 훌륭한 정보의 누가 되지 않게 수정을 부탁 드립니다.

Leave a Reply