회사에 입사한 이후에 소스코드 관리시스템 (SW Configuration Management system; SCM)으로 subversion; svn 을 사용해 왔다. 최근에 서로 다른 리비젼 간 혹은 동시 변경하다가 소스코드 합치기;merge 문제로 몇 번 삽질을 하고나서 몇 가지 외부 merging 툴을 사용해봤는데 성능이 좋으면서도 한글코드 문제가 없는 툴을 찾을 수가 없었다.
그러다가 상용 소스코드 관리시스템인 퍼포스;perforce 로 넘어갈 생각을 하고 - 다행히도 현재 속해있는 파트에 라이센스가 좀 남더라 - trac 과 연동이 제대로 되나 확인을 시도해봤다.
우선 필요한 파일들을 설치했다. Trac-hacks 에서 perforce-plugin과 이를 사용하기 위한 몇 가지 라이브러리들의 링크를 따라가서 설치했다. 대략,
이런 애들을 받고 설치. (위의 둘은 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 라고 되어있는 칸에 주소:포트 를 입력하더라 -_-;;; )
어제(2007-01-03)부로 리비젼이 올라갔다. 올라간 버젼을 받아서 테스트 해본 결과,
다만 현재 스테이블로 나와있는 녀석의 경우 trac 0.10.4 에서 정상동작하지 않아서 리비젼을 올려야 한다.
Written by rein on January 04, 2008 at 11:51am
좋은 정보 감사합니다. 그런데 SCM의 약자가 제가 알기에는 S/W Configuration Management 로 알고 있는데, 혹시 제가 잘못 알고 있는게 아니라면 훌륭한 정보의 누가 되지 않게 수정을 부탁 드립니다.
Written by Gabriel on August 05, 2008 at 9:41am
Jump to comments