2012-04-04 3 views
1

두 개의 중앙 분기/복제본이있는 Hg 프로젝트를 고려하십시오. DEV 및 PRD. 누군가 PRD로 핫픽스를 푸시하면 중앙 서버의 자동화 된 스크립트가 DEV로 이동하여 새로운 변경 사항을 가져옵니다. 그런 다음 핫픽스를 DEV에 병합합니다.hg diff3와의 자동 병합

문제는 Hg에 통합 된 병합 도구가 끔찍한 점입니다. 동일한 파일을 병행 변경하면 즉시 실패합니다. 다음 예를 참조하십시오.

parent:3,7c 
four 
five 
six 

seven 

child1:3,7c 
four 
five5 
six6 

seven7 

child2:3,7c 
fourmore 
five 
six 
more 
seven 

여기서 알 수있는 바와 같이 실제 충돌은 없습니다. kdiff를 사용하여 로컬로 병합하면 사용자 입력없이이 간단한 경우를 해결합니다!

중앙 서버에서 이러한 사례를 관리하는 방법을 알고 싶습니다. kdiff3을 자동 모드로 사용하는 방법을 생각했지만 kdiff3을 설치할 수는 없습니다 (CLI 액세스 전용 시스템이기 때문에 관리 액세스 권한이 없습니다).하지만 diff3을 hg 병합에 연결하는 방법이 있습니다. 이런 간단한 문제를 해결할 수 있습니까? 나는 "[ui]/n merge = diff3"을 hgrc에 설정하려고 시도했지만 세 가지 버전을 stdout으로 뱉어 냈습니다. 몇 가지 추가 구성이 누락 되었습니까? 아니면 더 쉬운 도구가 있습니까?

감사 병합 도구로 diff3를 사용하려면

답변

1

많은, 당신은 당신의 구성 파일에

[merge-tools] 
diff3.args = $local $base $other -m > $output 

를 추가해야합니다. 필요한 경우 우선 순위를 설정할 수 있습니다 (the wiki 참조). 더 복잡한 recipes for using diff3 there도 있습니다.

그러나, diff3이 시나리오를 인접 행의 편집으로 처리하는 방법을 테스트했으며, Mercurial과 마찬가지로이 명령을 깔끔하게 병합하지 않았습니다. 서로 다른 병합 도구는 "충돌"이라고 생각하는 것에 대해 서로 다른 임계 값을 가지며 KDiff3은 Mercurial 및 diff3보다 관대하게 보입니다.

PRD에 핫픽스를 작성한 개발자가 로컬로 DEV에 병합하여 KDiff3과 같은 도구에 액세스 할 수 있도록 할 것을 제안합니다. 서버에서 자동화 된 병합은 일반적으로 나쁜 것으로 간주됩니다. 병합하기 전에 병합은 사람이 조금만 검증해야합니다. 핫픽스를 작성한 후에는 별다른 작업이 필요 없습니다.