토요일, 8월 03, 2013

[B급 프로그래머] hg/git 클라이언트인 SourceTree

예전에는 DVCS(분산 버전 관리 시스템)이 없는 세상에서 어떻게 개발을 진행했는지 모를 정도로 급속도로 git와 hg(mercurial)이 개발자들 사이에서 일반화되는 추세다. 물론 여전히 CVS나 subversion을 사용하시는 분들을 위해 얼른 DVCS의 세상을 접할 수 있도록 오늘은 SourceTree라는 무료(라이선스를 받기 위한 등록은 필요하다) 클라이언트를 하나 소개해드리겠다.

SourceTree는 기업용 위키인 Confluence와 기업용 이슈 추적 시스템인 JIRA로 유명한 Atlassian이 자사의 DVCS 호스팅 서비스인 Bitbucket과 자연스럽게 연동할 목적으로 배포한 git/hg 클라이언트다. 원래 맥OS X용만 있었는데, 윈도우로 이식되었기에 기존에 유명한 거북이(Tortoise) 시리즈를 사용하던 분들이라면 대체품으로 고려할만하다. Bitbucket을 사용하시는 분들이라면 clone할 때 다음 윈도우가 뜨는데 아래쪽 버튼(Clone in SourceTree)을 콕 누르면 바로 SourceTree를 사용해 클론 작업을 수행한다. 또한 git와 hg를 동시에 지원하기 때문에 git와 hg를 혼합해서 산출물을 관리해야 하는 프로젝트에서 특히 위력을 발휘한다.

원래 소스코드 관리 client는 개발자의 호불호가 확실히 갈리는 특성이 있어 사람마다 평가는 다르겠지만, 개인적으로는 만족하는 편이다. 기존 Tortoise의 셸 확장 방식을 선호하는 분들이라면 단독형으로 동작하는 SourceTree가 조금 불편하게 느껴질지도 모르겠다. 변경되었거나 새로 추가한 파일에 대한 관리는 큰 문제 없지만 전체 파일을 보면서 뭔가를 할 경우에는 답답할지도 모르겠다. 그리고 hg와 git를 사용자 인터페이스 변경 없이 함께 사용하려다보니 아무래도 기능이 적은 hg보다는 git 쪽이 완성도가 떨어지는 느낌이다(git에서는 복잡한 기능이 필요할 때 Terminal 버튼을 눌러 명령행에 의존해야 한다). 하지만 점차 개선되리라 믿는다.

SourceTree에서 개발자를 위해 마련한 선물 중에 가장 푸짐한 항목은 바로 git flow 지원이다(세부 설명은 A successful Git branching model한국어 번역을 참조하기 바란다). DVCS를 사용하다보면 브랜치 전략에 대해 고민을 하지 않을 수 없는데, 매번 바퀴를 발명하기가 곤란하니 개발자들이 아예 고정된 형태의 우수 사례를 수립하기 시작했고, 기능에 따른 브랜치와는 달리 개발/배포에 주안점을 둔 상위 단계의 브랜치 전략이 업계 표준으로 받아들여지기 시작했다. git flow는 브랜치마다 특정 역할을 할당하고 상호 작용하는 방식과 시점을 정의하며, 배포를 준비하고 관리하고 기록할 목적으로 개별 브랜치를 활용한다. 수작업으로 이런 정책을 따라가도 좋지만 반복적인 작업에 시간도 낭비되고 실수할 가능성도 높기 때문에 SourceTree에서는 아예 상단에 큼지막한 'Git Flow'라는 아이콘을 제공해 개발자가 손쉽게 git flow를 쫓아가도록 지원한다. 물론 SourceTree는 git flow의 자매품인 hg flow 기능도 제공하므로 git에 비해 상대적으로 브랜치 우수 사례가 정립되지 못한 hg 세상의 개발자들에게도 도움을 줄 것이다.

하지만 어디까지나 도구는 도구이므로, SourceTree를 사용한다고 해서 저절로 git나 hg의 복잡성이 해결되지는 않는다. 심지어 SourceTree와 hg에 익숙한 개발자들도 도구는 그대로 DVCS만 바뀐 git 세상에서는 매트릭트에서 기차역을 해매는 네오처럼 멘붕에 빠질 수 있으므로 기반 git 철학에 대해 파고들 필요가 있다. hg는 이미 [독서광] Mercurial: The Definitive Guide에서 소개를 드렸기에, 후속편으로 8월 중에는 git 서적 한 권을 소개해드리도록 하겠다.

결론: 지금까지 익숙했던 SVN는 잊어버리시고 hg가 되었든 git가 되었든 DVCS라는 신세계로 오시기 바랍니다. 지금까지 hg에 조금 익숙해질만 하니 다시 git로 넘어가느라 좌충우돌하고 있는 B급 프로그래머였습니다. ;)

EOB

댓글 없음:

댓글 쓰기