[Mac OS X] Git용 Merge 툴

Updated: 2012년 11월 27일

EclipseSubversion 플러그인인 Subversive로 파일을 비교하고 병합하려니 토할 것 같아서 미친 듯이 웹을 뒤졌다. 그 와중에 Integrating Git with a Visual Merge Tool라는 글 덕분에 삽질을 덜었다. 땡큐~

이 글에서는 오픈소스, 상업용 소프트웨어이나 무료인 것, 유료 소프트웨어로 나누어 9가지나 되는 툴을 소개한다. 하지만 다 필요 없고 상업용이지만 무료인 소프트웨어만 보면 된다. 대체로 오픈소스는 편의성이나 완성도가 떨어지니 패스! 상업용은 돈이 들어가니 결제 받는 과정이 귀찮아 일단 보류!

그래서 세 개의 툴을 비교하기 시작했다. 물론 이 중에 Xcode에 포함된 \’\’\’FileMerge\’\’\’는 이미 별로라는 걸 알기에 다음 두 가지만 살펴봤다.

결론적으로 둘 다 느렸는데 장단점이 명확하다. 다른 블로거의 말을 빌리자면,

WinMerge에서는 안되는 파일 3개를 다룰 수 있는 Merge 기능과 Perforce 의 P4Merge에서는 안되는 폴더 비교 기능이 있습니다.

사실 폴더 비교는 WinMerge가 좋구, 파일 비교랑 3-Way Merge는 P4Merge가 좋습니다. 두 개 쓰기 귀찮으신 분들은 그 중간 즈음하는 DiffMerge 도 괜찮을 거 같구요.

여기에 한 가지만 덧붙이자면 Mac OS X에서 DiffMerge의 구동시간이 상당히 거슬리더라.

자, 이제 어떻게 구성하면 되는지 살펴보자. 나도 Mac OS X에선 초보니까 정답이라 생각하면 곤란하고 그냥 이렇게 한 놈도 있다 생각하면 된다.

나의 구성

SourceTree부터

Mac OS X에서 쓸 무료 Git 클라이언트 중에 이만한 게 있나? 무려 Atlassian사가 개발했다. 이 녀석의 Diff는 일상 용도로는 상당히 좋다. 그런데 병합을 하려고 들면 머리가 아프다. 그래서 P4Merge나 DiffMerge가 필요하다.

우선 SourceTree를 설치한 후,

P4Merge를 쓰려면

Perforce 홈페이지에서 P4V: Visual Client를 찾아서 다운로드 받는다. 그리고 설치하는데 이때,

/

설치 파일에 포함된 여러 도구 중 p4merge만 골라서 설치하면 된다.

DiffMerge를 사용하려면

Source Gear 홈페이지에서 DiffMerge를 내려 받아서 설치한다. DiffMerge는 P4Merge보다 파일 인코딩을 유추하는 능력이 떨어진다. 그래서 한글이 깨져서 보이곤 한다. 만약 소스코드의 인코딩이 UTF-8이라면 우선 환경 설정으로 가서,

/

기본 규칙(Default Ruleset]을 편집하면 된다. 이렇게!

/

다시 SourceTree

이제 거의 끝나간다. 마지막으로 할 일은 Git의 기본 Diff/Merge 툴을 바꾸는 것이다. 원래는 ~/.gifconfig 파일을 수정해야 하는데 SourceTree를 사용 중이라면 그럴 필요 없다. SourceTree의 \’\’\’외부 Diff/Merge 툴\’\’\’을 바꿔주면 .gitconfig도 바뀌기 때문이다. 이제 환경 설정에 가서,

/

이렇게 바꿔주면 ~/.gitconfig 파일도 이렇게 예쁘게 바뀐다.

[user]
        name = CHOI, Jaehoon
        email = 이메일 주소
[credential]
        helper = osxkeychain
[core]
        excludesfile = /Users/사용자이름/.gitignore_global
[difftool sourcetree]
        cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge --nosplash $LOCAL $REMOTE
        path =
[mergetool sourcetree]
        cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge --merge --result=$MERGED $LOCAL $BASE $REMOTE
        trustExitCode = true

Subversion 사용자라면

Cornerstone 같은 상용 도구도 외부 Diff/Merge 툴로써 DiffMergeP4Merge를 지원한다.

/

마무리

마무리로 남길 말은 없고 참고 문헌만 적는다.

최 재훈

블로그, 페이스북, 트위터 고성능 서버 엔진, 데이터베이스, 지속적인 통합 등 다양한 주제에 관심이 많다.
Close Menu