본문 바로가기

이생각 저생각

Git vs Mercurial (기트 대 머큐리얼.. 으응?)

사외에서는 분산 저장소를 쓰는 분들이 늘고 있습니다만, 사내 팀들의 경우 대부분 서브버전(Svn)을 쓰고있습니다. 뭐, 불과 몇 년 전만 해도 회사내에도  CVS와 SVN이 양분하는 분위기였는데 이젠 절대 다수가 SVN을 쓰고 있습니다. 좋은 현상입니다... (라고 말하기도 사실 부끄럽습니다만, 어쨌든..)

그리고, 요즘 제 주변 분들 중에는 여기에서 한 발 더 나아가, 분산 저장소(DVCS)를 쓰는 분들이 점차 늘고 있습니다... (라고 말하고 보니.. 마찬가지로 여전히 부끄러운 마음이 드는군요.. 흠.. 뭐.. 어쨌든..)

글을 계속 읽어가시기 전에, 혹시 '분산 저장소를 왜 쓰냐?' 라던가, '장점이 뭔데?' 라는 의문이 드시는 분들은, 제가 이전에 올렸던 번역 글을 참고해 주세요.


네. 그렇습니다. 최근 엔지니어 사이에서의 본격적인 유행은 분산 저장소 입니다.

원래 유행이란게 그렇듯이, 남이 쓰니 나도 안쓰면 왠지 조금 뒤떨어지는 느낌인거잖아요. 결국 어느날인가는 머쓱한 표정으로, '그.. 그럼 나도 한 번 써볼까~ 분산저장소'하는 생각이 들겁니다. 그리고는 그 다음으로 떠오르는 선택지는 어떤 저장소 도구를 쓸 것인가 하는 겁니다.

Git 를 쓸까? Mercurial을 쓸까?



대략 보아하니 Git나 Mercurial이 유행의 대표주자인것 같습니다. 조금 늦게 시작하는 입장에서 아무거나 덥썩 물을 수는 없죠. 둘을 다 배우는건 좀 시간이 부족하니, 어느게 더 좋은지 알아보고 그걸 배워보기로 마음먹습니다.

둘 중 어느 것이 더 나을까요?

관련해서 몇 몇 그룹들이 오프라인에서, 그리고 언듯 살펴봐도 수십개의 온라인 글들에서 해당 내용을 주제로 이야기(를 가장한 치고박고..)를 하고 있습니다.


마치 예전에 이클립스 플러그인으로 subclipse를 쓸 것인가? subversive를 쓸 것인가를 놓고 논쟁하던 모습과 비슷합니다. 아, 그전에도 있었네요. java냐 c# 이냐.. 아.. 그전에도 있었어요. 볼랜드냐 비쥬얼스튜디오냐.. 아.. 그전에도 있었어요. 비베냐 델파이냐.. (음.. 이건 좀 너무 나갔나..? 어쨌든..)

우선, 저는 머큐리얼을 쓰고 있습니다.

'이런! 내 이럴줄 알았다!'면서 순간, Git의 우수성에 대한 내용을 ADC(Angry Driven Comment)로 승화하시려는 분들은 잠시만 진정해 주세요. 머큐리얼이 좋다고 말하려는거 아닙니다.

'뭐! 그럼 머큐리얼을 (속칭)까려는거냐?'라며 마찬가지로 폭풍 타이핑을 준비중이신 분들도 참아주세요.

휴우.. 역시 온라인 글은 저희 집 가족모임(엄니B형, 아버지AB형, 여동생 AB형, 저만 A형)만큼이나 어렵다니깐요.

다시..

우선, 저는 머큐리얼을 쓰고 있습니다. 현재 팀을 꾸려서 개발을 하고 있지도 않고 개인적인 차원에서 학습을 목적으로 사용하는지라 저장소 선택에도 문제가 없었고, 사용에도 (젠장!) 문제가 없습니다. 충돌날 일이 거의 없는데다, 제가 저한테 블레임을 건다거나 브랜치를 만들 일도 없거든요. (물론 혼자서 할 수도 있지만, 제가 무슨 다중인격도 아니고...)

SVN쓸때보다 좋아진 점은... 글쎄요.. 현재로써는 별롭니다. 장점은 배워서 아는게 전부랄까요? 사실 SVN 쓸때보다 오히려 더 불편합니다. 습관이 들기 전까지는 commit, update만 하고
push, pull을 까먹어서 오히려 분산환경(집/회사)에 혼란을 주었으니까요.

아.. 압니다. 언급하지 않은 장점이 많은걸.. 그리고 점점 글의 내용이 위험해 지고 있죠. (이크!)

지금, Git 를 쓰라는 거야? 아니면 Mercurial을 쓰라는 거야?
혹시, 쓸 필요 없으니 관두라는 스포일러같은 발언임?


그런건 아닙니다. 마침 이 문제를 집중적으로 다룬 사이트가 있더군요.


네. 그렇습니다.

소중한 시간, 아쉽게 쓰지 마시고, 하나라도 먼저 시작해 보세요. 그리고 경험이 쌓이시면 다른 분들께도 그 경험 공유해 주시면 더더 좋겠죠? :)

참고로, 윈도우즈 OS계열에서 개발하시고, SVN에서 이전하시려 한다면, mercurial이 조금 나은것 같습니다.
일반적인 개발자들을 기준으로 SVN -> Mercurial로의 이전과 SVN -> Git로의 이전 중
비용(학습곡선, 적응시간 등등 포함)은 SVN -> Mercurial로의 이전 비용이 경험상/느낌상 좀 더 낮았습니다.

최근 사내 교육에서 사용하는 저장소도 svn에서 mecurial로 이전했는데요, 엔지니어들이 별로 거부감없이 쉽게 쓰더라구요.

아.. 뭐야.. 결국 이러기냐고요? 아.. 그런거 아니라니깐요..

ps.
네버엔딩으로 진행되기 쉬운 논쟁에 관해 생각난거 더 있어요.
키보드 배열 두벌식과 세벌식. 핸드폰 문자방식 천지인과 이지한글.

ps2.
국내 유일의 DVCS책! DVCS에 대해 기초를 배우기 좋다는데, 저도 읽어보질 않아서 뭐라고 확실힌 말을...