DVCS의 유용성
2009/12/15 15:25예전에는, 버전 관리 시스템으로는 CVS를 사용하다가, 2004년부터는 Subversion을, 2009년부터는 Mercurial(= hg)을 사용하고 있는데, 폴더마다 .svn 이 생기지 않는다는 것과, 오프라인에서 commit이 가능하다는 점, 공유되지 않은 코드를 부담 없이 롤백 및 revert 할 수 있다는 점, TAG가 branch가 아니라는 점 등의 이유 때문이었다. Distributed의 진짜 장점은 체감하진 못하고 있었는데…
몇 일 전에, 멤버십에서 진행하던 프로젝트에서, 버전관리를 위해 중앙 저장소로 사용하던 서버를 사용할 수 없게 되는 초유의 불상사가 생겼다. 대체 소스코드 공유를 어떻게 해야 하나? 이 난관을 어떻게 극복해야 하나? 한~참을 고민하다가, Mercurial은 DVCS라는 것이 기억났다. 우와!
Subversion 이었으면, diff와 patch로 극복하거나, 임시로 다른 서버를 구해서 저장하거나 했겠지만, Mercurial은 그럴 필요가 없었다. 각 사용자가 가지고 있는 Repository 하나하나가 하나의 서버나 마찬가지다. Mercurial은 (Subversion과 다르게) 서버의 저장소 구조와 클라이언트의 저장소 구조가 전혀 차이가 없다. 단 한 명만이, hg serve를 실행하고, 나머지 사용자들은 기존대로 자기의 저장소에 commit 하다가, 모아서 hg serve를 실행한 사용자의 IP로 push를 하면 된다. 나중에 중앙 저장소 서버가 복구되면, 그쪽으로 push 해주면 그만이다. 같은 족보니깐 문제도 없다. 그래. Mercurial은 중앙 저장소가 필요 없는, 분산 버전 관리 시스템이잖아.
-- 이상한 나라의 종텐.

