본문 바로가기
SCM/mercurial

머큐리얼(TortoiseHg mercurial) 과 형상관리 - 설치

by 알 수 없는 사용자 2013. 7. 1.
반응형

오랜만에 글을쓰네요..; 하.. 몇달만인지 킄ㅋㅋ 

잡설은 집어치우고 머큐리얼에 대하여 글을 써보겠습니다.
(아놔 자바스크립트도 써야하는디 ㅠㅠ)


개발 수준이 어떻게됬고 나름 경험이 많다하여 자신의 코드가 항상 완벽할수는 없습니다. 또한 자신의 작업내역이 항상 머리속에 존재할수 없으므로 우리는 해당 코드를 시간의 흐름에 맡겨놓고 관측할수밖에 없습니다. 시간이 지나면서 여러모로 허술한점이 들어나게 되며, 기존 코드내역을 알수 없을경우 매우 최악의 경우에 치닫게 될 수 있습니다.

협업 프로젝트의경우에는 더 심각한 상황이 발생합니다. 동일한 소스를 고치거나 실수로 수정된 소스에 기존소스를 덤프해버리는 일이 다반사일 수 있고, 동료의 코드가 필요한 상황에서 개발을 진행할수 없는 극단적인 상황까지 발생할수 있으니 이 얼마나 안타까운 현실이 아닐수 없습니다.

개발자들은 늘 자신의 코드를 어딘가에 저장해야합니다. 이것은 코드를 안전하게 보관및 공유하려는 의미와 기록을 중심으로 과거 내역을 살펴보기 위함입니다.

위 사례(더 많고 슬픈 사연이 존재할지도...ㅠㅠ)를 토대로 코드의 형상을 관리해주는 툴은 SVN, GIT, Mercurial(필자가 아는것만 적음 ㅋ) 등이 있습니다.


각 관리 툴의 특징은 알아서 검색해보시길..  저같은경우 1인 프로젝트일 경우 SVN, 2인 이상부터 GIT, Mercurial을 권해드리고 싶습니다.


필자가 포스팅하려는 관리툴은 바로 HortoiseHg Mercurial입니다.

학업수준에서 배울만한 관리툴이 아니므로 다소 생소할수 있지만 실무에서는 SNV, GIT, Mercurial을 많이 사용하기때문에 미리 알아두는것도 나쁘지 않습니다.


다음 링크에서 Hg Mercurial Workbench를 다운받아주세요.
이 툴은 가시적으로 코드의 형상관리를 해주는 아주 좋은 툴입니다. 물론 무료 이구요.
http://tortoisehg.bitbucket.org/download/index.html


아직 Hg Mercurial Workbench를 통해 형상관리는 하지않았지만 언젠가는 branch가 무수히 많아질것입니다. 이때 기존코드와의 비교는 물론 과거내역을 확인 및 동료간의 중복파일머지등 빈번한 마찰이 매우 많을겁니다. 

다행히도 Hg Mercurial Workbench는 merge, diff , strip  등.. 막강한 형상관리 기능을 지원하고있기때문에 긴장할 필요는 없습니다. 다만.... 저런 기능들앞에서 인코딩의 문제가 가장 큰 벽으로 남아있습니다. UTF-8 과 EUC-KR은 실제 사용 바이트 수 부터 차이가 나며 지원 인코딩에 한계때문에 기본적으로 지원하는 툴로는 감당할수 없습니다. 

심각한경우 UTF-8로 된 파일이 EUC-KR로 변환되어 머지가 되버리는 어처구니 없는 상황도 나옵니다.

따.라.서 다음 부가적인 툴을 받아줍니다.



툴 이름은 SourceGear 라는 diff 툴입니다. 4버젼은 유로, 그 이하는 무료입니다.
http://www.sourcegear.com/
(블로그 관리자들은 내 ftp에서 3.3.2버젼 내려받으시길.. 64 , 86 버젼 다있음)

현재4.0버젼이 최신이지만 아쉽게도 유료화되었습니다. 하지만 3.3.2버젼은 무료이므로 안심하고 다운받으셔도 됩니다. 허나 3.3.2버젼은 함부로 링크하지 않겠습니다. (구글링하세요.)





두 파일 모두 설치를 완료하셨다면 머큐리얼의 서드파티인 소스기어를 셋팅해보겠습니다.

(셋팅하지 않을경우 머큐리얼이 갖는 기본 diff 툴이 실행되며, 인코딩의 벽에 심각한 좌절감을 맛보실듯 ㅋㅋ)


우선 머큐리얼을 실행 후 Global Setting(또는 mercurial.ini파일) 에서 다음과 같이 설정해주세요.

[ui]
username = [실제 사용자 이름]
merge = diffmerge 

[extensions]
mq = 
hgext.extdiff = 

[web]
push_ssl = False
allow_push = *

[extdiff]
cmd.diffmerge = C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe

[merge-tools]diffmerge.executable = C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe
diffmerge.args = -merge -result=$output -t1="Local Version" -t2=$output -t3="Other Version" -caption=$output $local $base $other

diffmerge.binary = False
diffmerge.symlinks = False
diffmerge.gui = True



이제 머큐리얼의 기본설정은 끝입니다.

위 설정의 기준은 외부 푸쉬와 strip 및 SourceGear 연동입니다.