2013-03-01 3 views
1

enter image description here가 어떻게이 예에 충돌

을 만들지 않고 다시 기본으로, 주요 떨어져 같은 시간에 만든 두 가지를 병합 할 방법 병합은 "창"과 "테스트"에서 다시 "주"에 있습니다 정상적으로 취급되는 가지 (빨간색 선)?

예를 들어, "windows"분기의 개발자는 A = 1로 설정하여 버그를 수정 한 다음 "windows"에서 수정을 테스트하고 "완료"라고 부릅니다. 따라서 "windows"를 "main"으로 다시 병합합니다. "주/8"그건 지금까지 문제가 아니야.

그런 다음 "test"분기의 개발자가 A가 "A = 0"으로 변경되어 그가 작업중인 버그를 수정한다고 말합니다.

"test/4"가 "main"으로 다시 병합되면 어떻게됩니까?

이제 "main/9"는 "A/0"을 표시하고 "windows/1"이 수행 한 수정을 덮어 씁니다.

그런 다음 "windows"아래에서 수정 프로그램을 작성한 개발자가 이제 다른 수정 프로그램에서 작업해야하며 "windows_2"가 생성된다고 말합니다. 그는 A가 여전히 "A = 1"이라고 생각할 것입니다. 왜냐하면 그것이 그가 그것을 버렸기 때문입니다. 개발자는 이제 "A = 0"이라는 것을 발견하기 위해 고통스러운 과정을 겪을 수도 있습니다.

이러한 변경 유형은 어떻게 처리됩니까? 따라서 메인 "트렁크"에서 병렬로 분기를 만들 때 변경 사항이 한 머지에서 다음 머지로 되돌아 가지 않습니다?

모든 정보는 크게 감사하겠습니다. 대단히 감사합니다.

답변

0

"test/4"을 "main"으로 다시 병합하면 어떻게됩니까?

이것은 비 단순 병합이되기 때문에 동일 * * 공통 조상 비해 "A="에 대한 광고 수정되었다. 이것은 병합하는 동안 명확한 충돌이며, 자동 충돌이 아닙니다.

그래서 test 지점을 다시 병합 개발자는 test 사이 windows 라인을 선택해야하며, 희망의 windows 지점에서 개발자로 확인합니다. merge page에서

:

두 개 이상의 참여자가 기본 기여 다를, DIFF 병합 충돌을 감지하고이를 해결하라는 메시지를 표시합니다. 모든 기고자의 차이점을 표시하고 각 기부자의 수락 여부를 결정할 수 있습니다.


  [changed 10]   |   [changed to 10 file 2]--- 
A;        | A=1; 
           -|- 
      [changed 10]   |   [changed to 10 file 3]--- 
A;        | A=0 
            |- 
Do you want the CHANGE made in file 2? [yes] 
no 
Do you want the CHANGE made in file 3? [yes] 
yes 
Applying CHANGE from file 3 [line 10] 
============ 
그러나 진정한 대답은 통신 경우 : 같은 파일 (특히 같은 라인) 수정을 필요로하는 경우, 그 유형을 관리하고 조정하는 몇 가지 방법이 있어야한다을 개발 노력의

ClearCase도 체크 아웃시 잠금 장치 (cleartool checkout -reserved)를 제안하여 windows 버전을 체크 아웃하는 동안 test을 체크 아웃 할 수 없도록했습니다.또한 개발자에게 test에 대한 확인을 요청하고 동료와 확인하고 수행중인 수정의 특성을 알고 있어야합니다.

+0

감사합니다. 나는 "merge hell"이라는 용어가 어디에서 왔는지를보기 시작했다고 생각한다. – falconK

관련 문제