2011-01-10 1 views
5

그것의 큰 판매 포인트 중 하나는 병합 기능입니다. 그래서 나는 지점을 만들고 그것들을 기본 줄에 병합하는 것으로 놀아왔다. 테스트 한 결과 하나의 브랜치에있는 하나의 Java 파일에 새로운 메소드 (methodA)를 추가하고 다른 브랜치에있는 동일한 파일의 완전히 다른 위치에 다른 메소드 (methodB)를 추가하는 방식으로 테스트되었습니다.MercurialEclipse와 병합하면 명령 줄에서 병합 할 때 자동으로 해결되는 충돌이 있습니다. Mercurial을 사용하여 회사에서 사용하기에 적합한 지 알아보기 위해 놀고 있습니다.

팀 -> 병합 옵션을 사용하여 이클립스에서 처음 시도했을 때 첫 번째 병합이 잘 작동하는 것으로 나타났습니다. 즉, 메소드 A가 추가되었습니다. 이제 두 번째 분기를 병합하려고 할 때 해결해야하는 충돌이 있음을 알립니다. 이 단순한 종류의 병합이 Mercurial이 쉽게 처리 할 수있는 종류의 것이라고 생각했을 때 이것은 매우 불행한 일이었습니다.

명령 줄을 사용하여 똑같은 테스트를 시도했지만 이번에는 정상적으로 작동했습니다. 즉, 두 가지 병합이 모두 충돌을 해결할 필요없이 성공적이었습니다. 병합 수행하려면 다음 명령을 사용하여 Eclipse에서 콘솔 출력을 보면 : 나는 명령 줄에서 나 자신을 실행할 때

hg -y merge --config ui.merge=internal:fail -r 611ca2784593525cdafd3082b17d3310037a5d58 -f 

반면 것은 단순히 수행

hg merge -r 1234 

은의 사용이다 병합 전략 'internal : fail'이 이클립스 내에서 발생하게한다 ?? 그렇다면 기본 동작을 변경하여 명령 줄에서와 동일한 방식으로 작동하도록 할 수 있습니까?

+0

입니다. 다음은 HG 사이트의 팁과 트릭 링크입니다. http://mercurial.selenic.com/wiki/TipsAndTricks#line-227 (글쓰기를 할 때 팁 22입니다.) 내가 볼 수있는 유일한 옵션은 외부 병합 도구를 사용하는 것입니다. 내 HG 상호 작용의 대부분을 위해 TortoiseHG를 사용하기 때문에 그것이 무엇인지 알지 못합니다. TortoiseHG의 다음 버전은 현재 작업대이므로 멋지 기 때문에 하나의 UI에서 모든 것을 할 수 있습니다. – Mikezx6r

답변

8

internal:fail은 Mercurial에 아무것도 병합하지 않도록 지시합니다. 자세한 내용은 the mercurial wiki을 참조하십시오.

mercurial 용 Eclipse 플러그인 작성자는 Mercurial이 자동으로 병합을 모두 실패한 다음 Eclipse에서 병합을 수행하지 못하도록하여 이클립스에서 병합을 더 잘 제어 할 수 있다고 느꼈고 아마도 파일이 병합 될 때 hg resolve --mark ...을 호출 할 것입니다. 의욕 명령 줄에서

당신은 모두 사소한 병합 처리하는 premerge 동작을 받고, 거기 경우 다음 여전히 해당 파일 형식에 대한 가장 높은 우선 순위를 가지고 있으며, 여러분의 볼 수 있습니다 당신의 MergeToolConfiguration에서 도구의 호출을 충돌하고 로컬 시스템.

+5

감사합니다. 환경 설정에서 '충돌을 해결하기 위해 외부 병합 도구 사용'상자를 선택하여 자동으로 간단한 병합을 수행하는 Eclipse 플러그인을 얻을 수있었습니다. 약간의 불행한 점은 플러그인이 premerge 동작을 수행하도록하기 위해 외부 병합 도구를 사용해야한다는 것입니다. 이상적으로는 premerge 동작을 얻고 싶지만 여전히 충돌을 해결하기 위해 Eclipse를 사용하십시오. – DaveJohnston