2010-08-23 4 views
1

파일 X.java의 변경 사항 - hg repo explorer를 통해 내 변경 사항이 표시됩니다. 로컬 저장소에 X.java에서새내기 - 수은 ​​병합 문제

커밋 변경

또한 X.java 다른 개발자가 충돌하지 않는 변경을 포함 중앙 REPO 변경 사항을 뽑아 - 나는 다른 개발자에 의해 X.java에서 만든 chages를 참조하십시오.

나는 로컬 두 가지 버전, 병합 후

합병 내가 무엇을보고하고하는 것은 다른 개발자가 만든 변경 사항은이 파일에 대한 (!) 손실, 및 사후 병합 파일 내가 전에 저지른 것과 동일하다는 것이다 병합하십시오. 다른 사람에 의해서만 변경된 다른 모든 파일은 손상되지 않았습니다.

왜 merge가 다른 개발자의 변경 사항을 덮어 썼는지 잘 모르겠습니다. 두 개발자가 변경, 병합 및 커밋 한 모든 파일에이 문제가 발생했음을 알았습니다.

나는 모든 수은 작업에 거북이 hg를 사용하고 있습니다.

아무도 나에게 무슨 일이 일어나는지 이해하도록 도와 줄 수 있습니까?

또한 이전 병합의 결과로 덮어 쓰여지고 이미 수정 된 중앙 저장소에 위탁 한 파일을 검색 할 수 있습니까?

덕분에 많은 댓글 **

에서

** 업데이트 추가 나는이 파일에 변경 내가 수은 생각하지 않는다 충돌하지 않는 된 이후 어떤 도구 나 Kdiff를 시작하거나 요구 생각 수동으로 선택하겠습니다. 나는 그것이 스스로를 자동화했다고 생각한다. 100 % 확신하지 못했다면, 수은이 파일을 "U"(Unresolved)로 표시했을 수도 있습니다. 충돌하지 않은 변경 사항을 확인한 후 "해결 된 것으로 표시"옵션을 선택했을 수 있습니다. 나는이 경우에 내가했는지 확실하지 않은 몇 개의 파일에 대해서 그렇게하고 있음을 기억한다. 그래서 두 가지 가능성 만 있습니다. 1. Mercurial이 내 간섭없이 자동으로 병합되었을 수 있습니다. 2. "해결 된 것으로 표시"옵션을 선택했을 수 있습니다. - alwaysLearning

답변

2

Mercurial은 병합을 요청할 때 사전 병합을 수행합니다.하지만 매우이므로 보수적이어서 바닥에 코드를 남겨 두지 않으므로 "자동 병합"하지 않습니다. 이거 당신을 위해서.

두 번째 조치 '해결 된 것으로 표시'는의 결과를 완벽하게 나타냅니다. "디스크의 작업 복사본은 두 파일의 완벽한 결합이며 병합 변경 집합으로 승격 된 것이어야합니다."라고 명령으로 resol (hg resolve --mark 명령 줄에서 사용)을 사용합니다. 이러한 파일을 실제로 병합하기 전에 그렇게하면 결과 파일에 병합의 왼쪽 부모 만 남게됩니다. 다시 부모의 소리가 들립니다.

다행히 당신은 항상 병합을 다시 수행 할 수 있습니다

hg update -r leftParentRevisionId 
hg merge rightParentRevisionId 
..do your manual merges as necessary. 
hg commit -m 'merged left and right' 

불행하게도, 사람들은 이미 불완전 이전에 당신이 이상 그 일을 이동해야합니다 밀려 한 합병에 따라 추가 작업을 수행 한 경우 너무.

일반적으로 병합은 입력과 마찬가지로 코딩의 일부분임을 기억하십시오. 그것은 의식적인 인간 행동이며주의와 코드 검토가 필요합니다.

+0

이 파일에서 변경된 내용이 서로 충돌하지 않았기 때문에 나는 수은 같은 도구 나 Kdiff를 시작하지 않았다고 생각하거나 수동으로 선택하도록 요청했습니다. 나는 그것이 스스로를 자동화했다고 생각한다. 100 % 확신하지 못했다면, 수은이 파일을 "U"(Unresolved)로 표시했을 수도 있습니다. 충돌하지 않은 변경 사항을 확인한 후 "해결 된 것으로 표시"옵션을 선택했을 수 있습니다. 나는이 경우에 내가했는지 확실하지 않은 몇 개의 파일에 대해서 그렇게하고 있음을 기억한다. 그래서 두 가지 가능성 만 있습니다. 1. Mercurial이 내 간섭없이 자동으로 병합되었을 수 있습니다. 2. "해결 된 것으로 표시"옵션을 선택했을 수 있습니다. – alwaysLearning