내가 선택한 버전컨트롤 시스템(2012년 판)

김포프 2012-05-01

작년에 영문 블로그에 제 개인적으로 사용하는 버전컨트롤 시스템은 Subversion이란 글을 올렸었습니다. 근데 그 뒤에 Perforce에 두 가지 변화가 생겨서 다시 한 번 생각을 하게 되었지요. Perforce에 생긴 두 가지 변화는 다음과 같습니다.

  • P4SandBox란 이름의 새 기능
  • 공짜버전의 한도가 20명 사용자, workspace 20개로 널럴해졌음

P4SandBox란 무엇인가?

이 새로운 기능이 Perforce 2012.1 에서 소개되었는데요. 이건 Git처럼 각 개인컴퓨터에서 local private 버전 컨트롤을 가능하게 해주는 기능입니다. 하지만 Git처럼 완전히 분산시스템은 아니고요. 중앙서버에 있는 depot을 개인 컴터 HDD에 mirror 복사를 해놓은 뒤 오프라인상태로 작업을 할 수 있게 해주는거지요. 그리고 나중에 중앙서버에 파일들을 checkin할 준비가 되면 그때까지 local 서버에 제출했었던 모든 파일들을 전부다 중앙서버에 올리는 겁니다. 또한 P4SandBox는 Stream이라는 게 있는데요. Git의 막강한 브랜치 시스템과 거의 비슷하게 작동하네요.

이 기능들에 대한 더 자세한 내용은 이 비디오를 참고하세요. 저보다 더 자세히 설명해 줍니다. ^_^

Background

게임업계에 대략 10년간 몸담았고 여러가지 오프소스 프로젝트를 주무르다보니 정말 다양한 버전컨트롤 시스템(VCS)를 만져봤답니다. 그냥 파일들을 손수 복사해주는 것부터 매우 값비싼 상용 프로그램 Perforce에 이르기 까지요.

제가 여태까지 집에서 써오던 버전 컨트롤 시스템은 Subversion이었습니다. 물론 더 나은 프로그램이 있다고 입에 침튀기시는 분들도 많았지만 그 분들이 맞다/틀리다곤 하지 않겠습니다. 제가 Subversion을 써왔던 이유는 (예전 블로그 글에도 밝혔듯이) 가장 간편하게 사용할수 있으면서도 제가 원하는 기능을 적당히 잘 지원하던 놈이었기 때문입니다. 하지만 내일부로 다시 Perforce로 돌아갈 계획입니다. 왜냐면 이제 Perforce가 더 제 필요를 잘 충족시켜 줄거거든요. 다음은 제가 개인프로젝트용으로 사용하는 VCS로부터 원하는 것과 시중에서 널리 사용되는 VCS들이 얼마나 그런 일을 잘 하는지를 목록으로 정리해논 것입니다.

윈도우즈 지원

전 MS빠입니다. 언제나 윈도우즈를 사용하지요. 게임 프로그래인 저로써는 사실 Linux를 사용할 필요를 못느낍니다. 운영체제를 하나만 사용할 수 있다면 그게 확실히 덜 골치거리겠지요?

  • Git(-2): 사실 전 Git을 꽤나 선호합니다. 특히 브랜칭을 처리하는 거 보면 아주 침을 질질 흘리죠. 문제는 …. Git을 윈도우즈에서 돌리려면 좀 피곤하죠. 제가 아는 한은 Cygwin이나 msysgit을 설치하는 건데 Cygwin은 사실 Linux를 에뮬레이션 하는 것과 다르지 않고, Cygwin을 윈도우즈 PC에 설치하는게 그닥 달갑지 않습니다. msysgit은 그보단 윈도우즈에 설치하기 쉽지만 SSH도 따로 설정해줘야 하고….. 한마디로 그냥 마우스 클릭 한번만으로 윈도우즈에 Git을 설치할 방법이 없단 거지요. 따라서 MS빠인 저에게는 좀… no-no입니다.
  • Perforce(+1): Perforce는 윈도우즈를 매우 잘 지원하죠. 윈도우즈용 서버/서비스 프로그램도 인스톨러를 통해 한번에 설치 가능합니다.
  • Subversion(+2): 사실 이건 매우 큰 surprise였는데요. 그리고 그게 바로 제가 Subversion을 지금까지 이용해온 이유기도 하구요. VisualSVN Server이란 프로그램이 있는데 마우스 한번 클릭으로 윈도우즈에 Subversion을 깔아줍니다. 알아서 https 액세스도 잡아주고 사용자 관리 및 뭐니 모두 매우 간단한 GUI 툴에서 잡아줄수가 있습니다. Perforce를 설치하는 것보다도 쉬워요 -_-;

(가끔 있는 일이지만) 다중의 사용자 지원

개인 VCS는 사실 제 스스로의 코드의 히스토리를 저장하고 백업을 보관하는 용도이지만 가끔 제 친구들도 제 코드를 받아보게 할 일이 있지요. 절 도와준다거나 할때요. 따라서 여러명의 사용자를 지원할 수 있어야 편합니다.

  • Git(+1): Git에서 여러 사용자 지원하는건 전혀 어렵지 않죠. 하지만 윈도우즈에서 각 사용자별로 액세스 컨트롤을 해주는 게 왕 짜증입니다.. 새로운 윈도우즈 사용자를 추가한 뒤, 각 사용자의 public키를 받아서 디렉토링 ㅔ넣어줘야 하죠..
  • Perforce(+1): 작년까지인가 Perforce는 공짜에 한도가 있었죠. 다음 중에 한 조건에서만공짜였습니다. i) 2명의 사용자와 5 개의 클라이언트 워크스페이스 또는 ii) 사용자 제한 없이 1000개 파일까지만. 하지만 이제는 20명의 사용자와 20개의 클라이언트 워크스페이스까지가 공짜입니다. 파일 수의 제한은 없구요. 하지만 새로운 P4SandBox기능을 쓰려면 각 사용자별로 2개의 워크스페이스가 필요합니다. (하나는 중앙서버용 하나는 local 미러용). 그리고 각 컴퓨터별로 이렇게 해줘야 하니 보통 사용자가 2대의 컴퓨터를 쓴다고 가정하면 한사람이 4개의 워크스페이스를 잡아먹죠. 따라서 결국에 5명의 사용자만 제대로 지원할 수 있다는 건데… 제 개인 프로젝트용으로는 이정도면 매우 충분한거 같습니다. 따라서 예전에 줬던 -1점을 +1 점으로 바꿨습니다.
  • Subversion(+2): 윈도우즈 지원 섹션에서 말씀드렸듯이 VisualSVN Server에서 GUI 툴을 통해 간단히 액세스 컨트롤을 할 수 있습니다. 너무너무 쉬워요~ 사용자 수 제한도 없고~ 강추입니다.

비용

아무래도 공짜가 좋죠.. 공짜가 최고 -_-d

  • Git(+1): 공짜
  • Perforce(0): 특정 조건하에 공짜. 하지만 최근들에 그 제한이 완화되었음. 따라서 점수를 -1에서 0점으로 바꿨습니다.
  • Subversion(+1): 역시 공짜

GUI 클라이언트

Perforce만큼 멋진 GUI 클라이언트가 없습니다. 사실 P4V 보단 P4Win이 좋았지만 P4Win은 더이상 안나오니.. 중얼중얼…P4V도 충분히 좋아요~ 물론 GUI 클라이언트로 할 수 없는 일은 컴맨드 라인을 쓰지만 거의 대부분 GUI 클라이언트를 사용하는 것이 훨씬 빠르고 훨씬 쉽더라구요.

  • Git(-1): 아직 공짜이면서도 쓸만한 GUI 클라이언트를 못찾았습니다. 몇개 개발중인건 봤는데 아직 맘놓고 쓸만큼 자리잡은 놈들이 없어요. 그나마 TortoiseGit이 좀 쓸만하지만 P4V처럼 진정한 GUI클라이언트가 아니지요.
  • Perforce(+2): P4Win은 죽여주고, P4V도 매우 좋습니다. ㄱㄱㅑ~
  • Subversion(+1): SmartSVN이란 프로그램을 한동안 써왔습니다. 프로 버전을 사지 않으면 좀 기능에 제한이 있지만 사실 공짜버전만으로도 충분히 쓸수있습니다. 공짜 버전에서 제공하지 않는 기능이 있다면 그냥 TortoiseSVN으로 해주면 되고, 그것도 안 되면 컴맨드라인을 쓰면 되죠. 하지만 거의 SmartSVN만 쓰시고 사실 겁니다… ㅎㅎ

브랜칭

브랜칭… 꽤 멋진 놈이죠… 전 이거 사랑합니다. 코드가지고 장난칠 때(실험적인걸 할 때 라고 읽어주십쇼 -_-) 기존 코드에 깽판치고 싶지 않다면 이만한 놈이 없죠.

  • Git(+2): Git의 막강한 브랜칭 지원 매우 사랑스럽습니다. 다른 디렉토리로 파일을 복사할 필요가 없죠. 따라서 코드에서 파일 경로를 참조하는걸 바꿔줄 필요조차 없습니다. 예를들어 Awesome이란 이름의 라이브러리가 있는데 이 라이브러리를 브랜칭을 하고 싶다고 해보죠. Git에서는 그냥 다른 브랜치로 switch한 뒤 코드만 빌드하면 됩니다. 하지만 다른 소스컨트롤 시스템에서는 이 라이브러리를 다른 디렉토리로 복사해야하니 코드에서 라이브러리의 경로까지 다시 고쳐줘야 하죠…
  • Perforce(+2): 바로 위 Git에서 말씀드렸듯이 다른 폴더로 브랜칭을 해야하는 거 참 귀찮습니다. 그리고 Perforce는 중앙관리시스템이다 보니 그 수많은 파일들을 브랜칭 하는것도 되게 느리죠. 네트워크 스피드가 아무래도 HDD속도보단 느리니까요. 하.지.만. 이제 세상이 바뀌었습니다. P4SandBox를 이용하면 브랜칭이 Git의 브랜칭과 거의 같아집니다. 샌드박스안에서 모든게 이뤄지거든요. 중앙서버에 접속할 필요조차 없이… 따라서 점수를 -2에서 +2로 바꿨습니다.
  • Subversion(-1): 속도는 빠릅니다. 하지만 다른 디렉토리로 브랜칭 해야하는거… 흠냐.. 여전히 맘에 안듭니다.

최종 점수

점수를 다 더해보니 이렇게 나옵니다.

다시 한번 말씀드리는데 이건 제 개인적인 용도에 맞게 산출해낸 점수입니다. 대형 게임회사용이 아니에요. 따라서 여기다 "하지만 Perforce가 사용자 200명도 쉽게 지원하니 최고야!" 따위의 답글을 남기신다면 잠드시기 전에 이 비디오를 2시간동안 보게 만들겠습니다. -_-;