- 분산버전관리 머큐리얼로 개인작업 관리하기
Tweet
- Game Development
- 2009/10/03 02:30
- dvcs, git, mercurial, perforce, 머큐리얼, 버전관리, 분산버전관리시스템, 퍼포스
-
우리회사는 버전관리에 퍼포스를 씁니다. 일부 정보를 로컬의 특정 폴더(.svn)에 두는 서브버전과는 달리 퍼포스는 모든 정보가 서버에 있습니다. 그래서 모든 작업에 서버와의 통신이 필요합니다. 그럼에도 규모가변성은 상당히 좋은 것으로 알려져있더군요.
가끔 중요 마일스톤이 다가오면 퍼포스 저장소를 락합니다. 그러면 리드의 허락이 있기 전까지는 커밋(퍼포스 용어로는 서브밋)이 불가능하죠. 보통 안정화를 위해 이러한 작업을 합니다. 문제는 해당 마일스톤 릴리즈와 전혀 상관없는 작업을 하는 사람도 작업물을 한참동안 커밋하지 못하게 된다는 것이죠. 특히 기간이 길어질 경우, 그 사이에 한 기능이 아니라 여럿을 작업해놓을 수 있는데, 이 경우 나중에 락이 풀리면 한꺼번에 커밋을 하게 되죠. 이렇게 여러 기능을 한꺼번에 커밋하는 것은 좋지 않죠. 나중에 문제가 생겨 그 중 한 기능만을 되돌려야 하는 등의 경우에 문제가 생기기 때문이죠.
이럴 때 로컬 버전 관리의 필요성이 느껴지지요. 이를 위해 최근 대유행인 DVCS(Distributed Version Control System)을 응용할 수 있습니다. 근본적으로 DVCS는 중앙저장소의 개념이 없기 때문에 이러한 로컬 버전 관리 작업에 최적일 수 있는 것이죠.
그 중에서도 파이썬 기반의 Mercurial을 사용하여 작업하는 과정을 보여드리겠습니다. 특히 윈도우탐색기에 통합되어 동작하는 TortoiseHg를 기준으로 설명합니다(아쉽게도 아직은 초기 버전이라 완성도가 TortoiseSVN에 비해 많이 떨어집니다).
이상입니다. 서브버전과 사용법이 상당히 유사하다는 머큐리얼의 장점 때문에 서브버전에 익숙하신 분이면 적응에 어려움이 없으실겁니다(이것이 또다른 인기 DVCS인 git과 차별하여 내세우는 점이죠. 다른 말로 하면, git은 익숙하진 않지만 강력한 명령어들을 많이 가지고 있다고 볼 수도 있습니다).
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
가끔 중요 마일스톤이 다가오면 퍼포스 저장소를 락합니다. 그러면 리드의 허락이 있기 전까지는 커밋(퍼포스 용어로는 서브밋)이 불가능하죠. 보통 안정화를 위해 이러한 작업을 합니다. 문제는 해당 마일스톤 릴리즈와 전혀 상관없는 작업을 하는 사람도 작업물을 한참동안 커밋하지 못하게 된다는 것이죠. 특히 기간이 길어질 경우, 그 사이에 한 기능이 아니라 여럿을 작업해놓을 수 있는데, 이 경우 나중에 락이 풀리면 한꺼번에 커밋을 하게 되죠. 이렇게 여러 기능을 한꺼번에 커밋하는 것은 좋지 않죠. 나중에 문제가 생겨 그 중 한 기능만을 되돌려야 하는 등의 경우에 문제가 생기기 때문이죠.
이럴 때 로컬 버전 관리의 필요성이 느껴지지요. 이를 위해 최근 대유행인 DVCS(Distributed Version Control System)을 응용할 수 있습니다. 근본적으로 DVCS는 중앙저장소의 개념이 없기 때문에 이러한 로컬 버전 관리 작업에 최적일 수 있는 것이죠.
그 중에서도 파이썬 기반의 Mercurial을 사용하여 작업하는 과정을 보여드리겠습니다. 특히 윈도우탐색기에 통합되어 동작하는 TortoiseHg를 기준으로 설명합니다(아쉽게도 아직은 초기 버전이라 완성도가 TortoiseSVN에 비해 많이 떨어집니다).
- 먼저 다운로드하여 인스톨합니다. 아쉽게도 재부팅을 요구합니다;
- 퍼포스와 연동된 워크스페이스에 머큐리얼 저장소를 만듭니다.
- 최초로 파일들을 등록합니다. 나중에 용량이 과도하게 커질 수 있으므로 퍼포스가 데이터도 관리하고 있던 경우라면 소스코드만을 추가하실 것을 권장합니다.
- 방금 추가한 것들을 실제 커밋합니다. 파일들의 개수 및 용량에 따라 시간이 좀 걸릴 수 있습니다.
- 이제 끝입니다. 로컬에서 작업하시다가 언제든지 머큐리얼 저장소에 커밋을 하실 수 있습니다.
- 나중에 퍼포스가 준비되면 여러 머큐리얼 커밋을 한꺼번에 서브밋할 수 도 있고, 적절한 버전으로 롤백하면서 여러번 나누어 서브밋할 수도 있습니다.
- 물론 퍼포스 저장소에 새로 올라오는 변경사항들은 주기적으로 머큐리얼 저장소에 동기화해주어야합니다.
- 머큐리얼 로그를 확인해보면 다음과 같은 모습일 수 있겠죠. Sync로 시작하는 것들이 퍼포스와 동기화하기 위한 커밋들입니다.
이상입니다. 서브버전과 사용법이 상당히 유사하다는 머큐리얼의 장점 때문에 서브버전에 익숙하신 분이면 적응에 어려움이 없으실겁니다(이것이 또다른 인기 DVCS인 git과 차별하여 내세우는 점이죠. 다른 말로 하면, git은 익숙하진 않지만 강력한 명령어들을 많이 가지고 있다고 볼 수도 있습니다).
![]() Habanero splash by Tambako the Jaguar |
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Game Development' 카테고리의 다른 글
| 차세대 게임개발 언어로 D에 주목하는 이유 - 2 (6) | 2009/10/20 |
|---|---|
| 크라이엔진 3 발표와 크라이텍코리아 구인 (0) | 2009/10/18 |
| 분산버전관리 머큐리얼로 개인작업 관리하기 (2) | 2009/10/03 |
| 차세대 게임개발 언어로 D에 주목하는 이유 - 1 (10) | 2009/09/19 |
| gamescom 간단 참관기 (6) | 2009/09/02 |
| GDC Europe 2009 참관기 (2) | 2009/08/25 |












Recent comment