SW 리뷰: Perforce

소프트웨어 프로젝트에서 흔히 “소스코드 관리툴 (Source Code Management Tool;SCM)“이라고 부르는 물건들을 쓰게 된다. 사실 안 쓰면 망하기 딱 좋다.

학부생/대학원생 시절에, 그리고 회사 입사한 이래로 subversion (SVN) 이라는 오픈소스 도구를 써왔는데, 지금 하는 프로젝트에서 소스관리툴을 Perforce라는 상용 도구로 바꾸게 되었다. 근 몇 주가 쓰면서 느낀 점을 정리해보겠다.

  • 속도가 빠르다. 특히 크기가 큰 바이너리 파일도 꽤나 빠르게 전송한다. SVN도 1.5.0 버젼에서 속도가 약간 빨라진 것 같지만 – 아직 일부 프로젝트는 SVN 기반으로 관리됨 – perforce 쪽이 더 빠른 느낌?
  • 변경 사항 태깅을 지원한다. SVN은 체크아웃 자체가 일종의 branch인 것처럼 동작한다. Perforce도 약간 비슷한 개념인데, 한 번의 체크아웃 후 “Changelist"라는 목록으로 변경사항들을 관리하게 된다. 즉 개별 changelist가 일종의 local branch 비슷한 기능을 한다. Commit 단위도 이 녀석이라 변경 사항 여러 개를 동시에 유지하기가 편리하다. 사실 이 기능이 가장 만족스러움…
  • Perforce 자체가 굳이 따지자면 svn보다는 cvs에 가까운 개념으로 동작한다. 변경을 위해서는 일종의 checkout을 해야하고, 누가 변경하고 있는지도 “다른 사람에게” 보이는 형태다. 비슷하게 changelist 들도 뭐가 있는지 어떤 머신에서 누가 수정하고 있는지 서로 보인다.
  • 디렉토리 별 권한 설정은 perforce 쪽이 조금 더 쉬워 보인다. 좀 더 세세한 권한 관리가 가능

…정도. git + svn 을 쓰려다가 한글 파일에서 계속 문제가 생겨서 포기했는데, 대충 그거의 적당한 부분집합 정도를 perforce에서 쓰게 된 듯. Trac 과의 연동도 SVN 만큼은 아니지만 꽤 잘 되는 편이고, 나름 만족스럽게 사용 중이다. 덤으로 CruiseControl.NET 에서도 별로 설정 차이가 없어서, 몇 줄 고치고 나니 빌드도 잘 된다.

다만, 가격이 비-_-싼 상용툴이란건 좀 문제임. 라이센스가 있으니 쓰는 거지 굳이 사서 쓰기엔 뭔가 불만족스럽다. 나중에 툴을 고를 시점이 온다면 — 내가 결정권이 있을 때의 얘기지만 — git 가 윈도우환경에서 충분히 안정화된다면 git + svn 같은 걸 생각하지 않을까 한다. (git 만 쓰는 것도 가능하고)