SVN 두 가지에 파일이 추가 될 때 새 트리 충돌을 해결하는 방법

StackOverflow https://stackoverflow.com/questions/767763

  •  12-09-2019
  •  | 
  •  

문제

두 가지에 파일이 추가 된 다음 별도의 분기에서 작업 한 다음 SVN 1.6.1을 사용하여 두 개의 지점을 병합 할 때 새로운 트리 충돌 중 하나가됩니다.

      C foo.txt
  >   local obstruction, incoming add upon merge

두 가지의 변경 사항이 필요하지만 트리 충돌로 인해 충돌의 특성으로 인해 이해할 수있는 일반적인 .working, .merge-left & .merge-right 파일을 제공하지 않습니다. 이러한 충돌이 상당히 많이 있으며, 각 분야에서 동일한 파일의 삭제가 발생했지만 해결하기가 간단합니다.

이 문제를 어떻게 해결할 수 있습니까? SVN Redbean Book (1.6) 은이 상황을 다루지 않습니다.

도움이 되었습니까?

해결책

이전 버전 (2009)에서 언급했듯이 "트리 충돌"디자인 문서:

XFAIL은 버전의 파일을 추가하는 병합에서 충돌합니다

이 테스트는 병합을합니다 기존 버전 파일에 기록이없는 파일 추가를 가져옵니다..
이것은 ''파일의 나무 충돌이어야합니다.local obstruction, incoming add upon merge' 다양성. R35341의 기대치 고정.

(이것은 Clearcase에서 "Evil Twins"라고도합니다) :
파일은 두 개의 다른 분기에서 두 번 (여기서 "추가")를 만들어 두 개의 다른 요소에 대한 두 개의 다른 역사를 만들지 만 동일한 이름으로 만들어집니다.

이론적 솔루션은 대상 분기에서 해당 파일 (외부 Diff 도구 포함)을 수동으로 병합하는 것입니다.B2'.

여전히 소스 분기에서 작업중인 경우 이상적인 시나리오는 소스 분기에서 해당 파일을 제거하는 것입니다. B1, 다시 합병 B2 에게 B1 해당 파일을 보이게하기 위해 B1 (그런 다음 같은 요소에서 작업합니다).
병합이 불가능한 경우 병합이 발생하기 때문에 B1 에게 B2, 그러면 각각마다 수동 병합이 필요합니다. B1->B2 합병.

다른 팁

나는 a를 찾았다 이를위한 해결책을 제안하는 게시물. 실행하려고합니다.

svn resolve --accept working <YourPath>

로컬 버전 파일을 OK로 주장합니다.
단일 파일 또는 전체 프로젝트 카탈로그 용으로 실행할 수 있습니다.

들어오는 변화가 원하는 변화라면 어떻게해야합니까? SVN Resolve를 실행할 수 없습니다

SVN Resolve -Accept Base

나는 단지 위의 User619330의 조언을 따르려고 완전히 노력했다. 상황은 다음과 같습니다. (1) : 초기 분기 Branch1에서 작업하는 동안 일부 파일을 추가했습니다. (2) 나는 추가 개발을 위해 새로운 지점 인 Branch2를 만들어 트렁크에서 분기 한 다음 Branch1의 변경 사항을 병합했습니다. 그런 다음 트렁크로 다시 병합했습니다. (4) 이제 트렁크에서 현재의 현재 작업 지점 인 Branch2로 병합하고 싶었습니다. 이것은 SVN 1.6.17입니다.

병합은 새 파일과 트리가 충돌했으며 트렁크에서 새로운 버전을 원했기 때문에 Branch2의 깨끗한 사본에서 충돌하는 파일의 SVN 삭제를 수행하여 이러한 Branch2 변경 (따라서 임시를 생성했습니다. 파일이없는 Branch2의 버전), 트렁크에서 합병을했습니다. 나는 역사가 트렁크 버전과 일치하기를 원했기 때문에 이것을했다. Merge는 잘 진행되었고, 나는 파일의 트렁크 버전을 얻었고, SVN ST는 모두 OK를 보여준 다음, 이전에 수행 한 삭제와 병합에서 추가 된 삭제 사이에 변경 사항을 커밋하려고 시도하면서 더 많은 트리 충돌을 쳤다. 내 작업 사본 (현재 파일의 트렁크 버전이있는)에 찬성하여 충돌을 해결하고 커밋하게 만들었습니다. 모두가 좋을까요?

음 ... 아니. Branch2의 다른 사본을 업데이트하면 이전 버전의 파일 (프리 트렁크 병합)이 발생했습니다. 이제 나는 두 개의 다른 버전의 파일로 업데이트 된 Branch2의 두 가지 작업 사본을 가지고 있으며, 둘 다 최신 정보를 제공한다고 주장합니다! Branch2의 깨끗한 사본을 확인하면 이전 (프리 트렁크) 버전의 파일이 생겼습니다. 수동으로 트렁크 버전으로 업데이트하고 변경 사항을 커밋하고 첫 번째 작업 사본 (원래 트렁크 변경 사항을 제출 한)으로 돌아가서 업데이트를 시도한 후 이제 해당 파일에 체크섬 오류가 발생합니다. 문제의 디렉토리를 날려 버리고 업데이트를 통해 새 버전을 가져 오면 마지막으로 트렁크 변경 사항이있는 Branch2의 좋은 버전이 있어야합니다. 나는 희망. 경고 개발자.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top