태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Merge Tool(머지툴) 비교 - (3way merge 기능) - 수정

2009/02/25 00:19 by Ray.전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
소프트웨어를 개발하다 보면 소스코드의 브랜치가 일어나고 이를 Merge(머지)하는 일은 피하기가 어렵습니다.
이 Merge(머지)과정을 자동화 툴을 이용하면 상당히 많은 시간을 절약할 수 있습니다.
특히 Merge의 자동화를 위해서는 3way-Merge가 필수적인데, 시중에서 3way머지가 지원된다고 하는 툴 4가지와 SVN에서 지원하는 Unified diff, 이렇게 총 5가지를 비교해봤습니다.
그 결과는 아래와 같이 평가를 하였습니다. KDiff3, P4Merge와 Araxis Merge가 우수하게 나왔습니다.





 총점



 비교 데이터

비교 방법은 일부러 Conflict가 일어나는 상황을 만들어서 각 Merge툴이 얼마나 손쉽게 Conflict를 해결하는지 비교하였습니다.

제가 분석을 위해서 사용한 파일은 다음과 같습니다.


위에서 자동으로 Merge가 가능한 부분은 노란색으로 칠했고, Conflict가 나는 부분은 보라색으로 칠했습니다.
이렇게 Conflict를 일으켜서 SVN에서 자동 Merge를 실패하게 한 후에 각각의 Merge툴로 비교를 해 봤습니다.


 실행
KDiff3와 Araxis Merge는 Conflict가 났을 때 SVN에 떨궈주는 파일 3개를 선택해서 쉽게 해당 툴을 실행할 수 있습니다. 그래서 Merge하는 시간을 절약할 수 있습니다.

KDiff3

Araxis Merge


 비교 화면

비교는 Orginal File(Base)과 Trunk File(Working)과 Branch File 3개를 비교했습니다.
그 화면은 다음과 같습니다. 이미지를 클릭하면 큰 이미지를 볼 수 있습니다.
언뜻 보기에는 각각의 화면이 크게 차이가 나지 않는 것처럼 보입니다. 각 툴마다 다른 부분, Conflict가 나는 부분을 다른 방법으로 표시를 하고 있습니다. KDiff3는 한글이 깔끔하게 나오는 것이 눈에 좀 거슬리지만, 기능에는 문제가 없습니다.
비교 화면에서는 Araxis Merge가 가장 직관적이고 깔끔한 화면을 보여줍니다.

KDiff3

P4Merge

Araxis Merge

Beyond Compare

Ultra Compare



Merge시 Conflict를 알려주는 다이얼로그 

KDiff3와 Araxis Merge는 의미있는 Conflict 정보를 Merge시 알려줍니다. 둘다 자동 Merge를 하면서 Conflict가 난 2건을 표시해 줍니다.
P4Merge는 가장 직관적인 화면을 보여주며 마찬가지로 Conflict 2건을 표시합니다.

KDiff3

P4Merge

Araxis Merge


Merge 화면

Merge를 실행하게 되면 KDiff3, P4Merge와 Beyond Compare는 원래 파일 3개는 그대로 두고 새로운 Merge파일 창이 새로 생깁니다. 하지만, Araxis Merge와 Ultra Compare는 기존의 파일을 수정하도록 되어 있네요.
P4Merge가 가장 직관적입니다.

KDiff3
P4Merge

Araxis Merge

Beyond Compare

Ultra Compare


Conflict 해결

Conflict는 각각 어떻게 해결을 할 수 이나 비교를 해 봤습니다.

KDiff3 - Merge화면에서 Conflict가 난 줄은 <Merge Conflict>라고 표시가 됩니다. 원래 비교 대상인 3개의 파일 중에서 하나를 마우스나 키보드를 이용해서 선택할 수 있습니다.

P4Merge - Merge창에서 Conflict가 난 부분은 붉은 표시가 되어 있습니다. 오른쪽에 있는 버튼을 클릭해서 원하는 부분은 클릭하면 쉽게 Conflict가 해결됩니다.

Araxis Merge - Conflict가 난 줄들은 줄 앞에 빨간 동그라미가 나옵니다. 해당 줄에서 >>, << 버튼을 이용해서 선택을 하면 됩니다.

Beyond Compare - Conflict가 일어난 줄은 붉은 바탕으로 표시가 됩니다. 이 줄에서 마우스 버튼을 이용해서 원하는 파일을 선택하면 적용이 됩니다. 테스트 시 라인 단위로 정교하게 선택이 안되고 뭉쳐서 선택이 되는 바람에 원하는대로 Merge를 하는데 시간이 좀 걸렸습니다.

Ultra Compare - Conflict는 표시가 안됩니다. 그냥 서로 다른 줄을 찾아서 ->, <-버튼을 이용해서 선택하면 됩니다. 자동 Merge가 안되서 수동으로 일일이 선택을 해줘야 합니다.



Unicode 지원

KDiff3 - Unicode를 지원하나 Auto detact가 잘 안되네요.
P4Merge - Unicode를 완벽하게 지원합니다.
Araxis Merge - 지원한다고 하는데, View에서 깨져 보임,  Merge는 됨 
Beyond Compare - View, Merge 모두 지원
Ultra Compare - View, Merge 모두 지원

총평

기능면에서는 약간 부족함은 있으나, 기본적인 Merge기능에 충실하고 가격이 무료인 KDiff3와 모든 기능이 우수하지만 가격이 좀 부담스러운 Araxis Merge에 높은 점수를 주었습니다.
그리고 P4Merge는 Merge 기능이 가장 직관적인고 편리합니다. 

실제로 Merge결과 원하는 결과대로 바로 Merge가 되면서 Conflict를 몇 초만에 해결할 수 있었던 것은 KDiff3, P4Merge와 Araxis Merge밖에 없었습니다.

Branch와 Merge가 빈번하고 회사에 경제적인 여유가 된다면 Araxis Merge가 적당할 것 같고, 그렇지 않은 경우라면 다른 유료 툴보다도 KDiff3와 P4Merge가 좋을 것으로 생각합니다.
저작자 표시 비영리 변경 금지

Ray.전규현 기반시스템/소스코드관리

Trackback Address: http://allofsoftware.net/trackback/90 관련글 쓰기
  1. KDiff3는 무료인데 최고점이군요. :)

  2. 안녕하세요. 영회님
    3way-merge 기능을 위주로 비교했기 때문입니다. 그리고 Araxis Merge가 기능이 더 좋기는 하지만, 가격 점수 때문에 그렇게 평가를 했습니다.

  3. 유용한 글 고맙습니다.
    SVN의 Unified Diff 는 TortoiseDiff 와 같은 것인지요?

  4. 헝그리맨님 안녕하세요.
    Unified Diff는 Text포맷으로 Merge를 할 수 있는 하나의 Format입니다. SVN과 TortoiseSVN에서 기본적으로 제공합니다. GUI가 불편하므로 GUI가 편리한 다른 툴들을 사용하는 것이고요.

  5. Blog Icon
    창천

    저는 보통 단순히 2개의 파일비교를 위해 winmerge를 사용하는데
    3-way merge 라는 것과 새로운 툴들 정보 잘 봤습니다.^^

  6. 창천님 안녕하세요.
    Winmerge같은 2way merge의 한계는 모든 것이 수동이라는 것이지요.

  7. Blog Icon
    뽕삼이

    언제나 유익한글 감사드립니다. 최근에 가장 자주오게되는 블로그네요.^^ 저도 현재 급한 프로젝트때문에 ClearCase를 사용하는 회사임에도 너무나 자주바뀌는 코드로인해 WinMerge를 통하여 급 머지를 하고있습니다.-_- 머지에 대해서 좀 자세하게 알고싶은데요.. 왜 3 way merge가 필수인가요? 아직 3 way merge에 대한 개념이 잘없네요. Tunk,와 Branch의 개념도 알고싶습니다. 감사합니다

  8. 뽕삼님 안녕하세요.
    http://allofsoftware.net/entry/Release-Branch-Function-Branch-and-Customer-Branchhttp://allofsoftware.net/entry/diffandmerge 를 읽어보세요. 더 궁금한 것이 있으면, Email을 보내주세요.

  9. Blog Icon
    popopome

    Perforce의 P4Merge도 무로이면서 좋은 3-way merge tool중에 하나라고 생각됩니다.
    http://www.perforce.com/perforce/products/merge.html

  10. popopome님 안녕하세요.
    P4Merge가 빠졌군요. 이것도 Evaluation에 추가를 할까 합니다. 감사합니다.

  11. 좋은 내용 감사합니다. 최근 반년간 거의 excel로만 작업을 했더니 코딩이 가물 가물 거리는 군요... ^^:

  12. 정의의소님 안녕하세요.
    경력이 쌓일 수록 코딩일은 점점 줄어들더군요. 그래도 코딩은 언제나 재미있죠. ^^

  13. Blog Icon
    kkurrung

    p4 merge툴 자체는 무료라고 하는데.. 가격이 ㄷㄷㄷ..
    http://perforce.com/perforce/products/merge.html

  14. 안녕하세요. kkurrung님 블로그에 오류가 있네요. 지금 다시 확인해보니, Perfoce Merge는 무료네요. 제가 적어 놓은 것은 서버의 가격이네요. 수정하도록 하겠습니다. 지적해주셔서 감사합니다.

  15. 국산 3 Way Merge 도구도 있습니다. (물론 우리팀이 만들고 있고, 상용입니다. :)
    http://www.snh.co.kr/?s=product&m=shape4 여기에서 평가판을 받으실수 있습니다.

    물론, 우리팀은 Merge Tool만을 전문적으로 만들지 않고, 형상관리에 관련된 전반적인것을 함께 개발하고 있기때문에, 총력을 다하고 있지만 못합니다만. 국산제품도 있다는 점을 알려드리고 싶어요...

  16. 머샤머샤님 안녕하세요.
    개발을 하시면서 소스코드관리시스템은 물론 실루엣을 쓰시겠죠? ^^ 이런류의 질문들이 항상 궁금했습니다. ㅎㅎ 나중에 기회가 되면 같이 검토를 해봐야겠네요.

  17. araxis가 좋긴한데.. syntax highlight가 안되서 간간히 winmerge를 사용하고 있습니다만
    디렉토리 비교 측면에서는 araxis가 좋더군요. 3way까지 잘 쓰질 않아서 유용한지는 잘 모르겠습니다 ^^;

  18. 구차니님 안녕하세요.
    3-way merge를 사용하지 않을 거면 winmerge로 충분하죠. 소프트웨어를 개발하다보면, 브랜치, 머지, 롤백 등 수많은 상황에서 3-way merge는 이런 활동을 몇배 편하게 해줍니다. 3-way merge도 익숙해질 필요가 있습니다.

  19. Blog Icon
    우연히

    우연히 지나다 글을 보고 남깁니다. 저도 kdiff3를 자주 씁니다만, 단순히 text merge할 때는 diffmerge를 사용합니다. 비교 대상에 없다는 게 안타깝습니다. free고 cross platform이면서 사용도 편한 꽤 좋은 tool입니다.

  20. 오랫만에 글 남깁니다. 혹시 SourceGear의 DiffMerge는 사용하지 않으시나요? :D

개발자의 파워는 어디에서 오는가?

뛰어난 개발자를 관리자로 써먹는 것 같이 개발조직에 비효율적인 일은 별로 없습니다. 하지만 현실에서는 이런 일이 흔히 벌어지고 있습니다. 실제로 저도 여러 회사에서 자주 접하고 있습니다. 여러가지 이유가 있을 수 있겠지만 주..

소프트웨어 개발자를 위한 소통의 장

그동안 블로그에 글을 쓰면서 여러 개발자분들의 의견을 듣는데 많은 불편함을 느껴왔습니다. 블로그의 글에 댓글을 남기면 약간 소통이 되기는 해도 주로 일방적인 전달을 벗어나지 못했습니다. 그렇게 해서는 많은 의견을 주고 받을..

애플이 아이폰4에서 한글을 바꾼 이유는...

얼마전 아래와 같은 아이폰의 Localization에 대한 글을 올린적이 있습니다. 2010/02/11 - [소프트웨어이야기] - 애플은 한국어와 한글을 구분하지 못한다? 심각한 내용은 아니었고, 아이폰의 다국어 설정 화면에..

마이크로소프트, 구글의 소스코드 트리의 비밀?

오늘 출근을 해서 메일을 확인하니 독자로부터 메일이 한통 와있더군요. 책에 대한 리뷰의 글이어서 감사히 읽었습니다. 질문도 하나 있어서 답변 겸 블로그에 글을 남깁니다. 독자 블로그 글 : 소프트웨어 개발의 모든 것 -전규현..

히딩크와 소프트웨어

월드컵도 다가오는데 소프트웨어와 축구를 한번 비교해보는 것도 좋을 것 같습니다. 제 블로그의 글들은 이런 방법 저런 방법으로 끊임없이 우리나라의 소프트웨어 현실이 무엇이 문제인지를 설명하고 있습니다. 그 중의 하나의 글이라도..

위기는 내부로부터 온다.

우리나라에서 소프트웨어 회사를 운영하기에 외적인 어려움들은 이미 많은 분들이 얘기를 해주셨습니다. 정권이 바뀔 때마다 급변하는 환경, 특히 대통령 따라 왔다갔다하는 여건들... 대기업과 중소기업간의 공정하지 못한 거래 대형..

Hotfix에서의 소스코드관리

아래 글에 차우차우님께서 Hotfix에 대한 질문을 해 오셔서 Hotfix에 대해서 좀더 자세히 설명하고자 합니다. 2010/05/03 - [기반시스템/소스코드관리] - 혼자서 개발을 하면 소스코드의 브랜치/머지가 필요없을까..

변경된 CC 평가 인증 제도

안녕하세요, 다시 CC인증에 대해서 이야기를 시작하려고 합니다. 제가 마지막 포스트를 한 것이 2008년 11월 이니까 거의 1년 반을 쉬게된 셈이네요. 다시 한번 심기일전하여 포스트를 해보록 하겠습니다. 마지막 포스트 이후..

혼자서 개발을 하면 소스코드의 브랜치/머지가 필요없을까?

소스코드관리에 대해서 얘기를 하다보면 혼자서 개발을 하기 때문에 별 고민 없이 대충 소스코드를 관리하는 경우를 많이 봤습니다. Subversion 등의 소스코드관리시스템을 쓰더라도 그냥 소스코드를 백업 받는 수준으로 사용하고..

맥에서 Subversion 사용하기

최근에 맥북을 구매해서 아이폰 개발 작업을 하고 있는데 맥에서 Subversion을 사용하는 환경이 그리 좋지 않다는 것을 알게 되었습니다. 그래서 맥에서 Subversion을 제대로 활용하기 위한 글을 적어보려고 합니다...