SVN의 문제점을 트렁크로 병합합니다
문제
나는 트렁크 (a)와 두 개의 가지 (b와 c)가 있습니다. a를 C와 합병하면 A를 B와 병합 한 후 이전 C가 덮어 쓰고 트렁크가 C 변경되지 않습니다.
내가 원하는 것은 병합 후 트렁크에 + b + c입니다.
더 많은 설명을 위해 편집 :
- 트렁크에는 "파일 1", "파일 2"및 "파일 3";
- 나는 트렁크에서 "Branch 1"로 분기를 만듭니다.
- "분기 1"으로 전환하고 버그를 "파일 1"파일로 수정하고 커밋합니다.
- 동시에, 다른 사람은 트렁크에서 "Branch 2"로 분기를 만듭니다.
- 이 사람은 다른 버그를 "파일 2"및 "파일 3"파일로 수정하고 커밋합니다.
- "Branch 2"는 게시를 위해 승인 된 다음 "Branch 2"를 "트렁크"(OK)로 병합합니다.
- 다음날 "Branch 1"이 승인 된 다음 "Branch 1"을 "트렁크"로 병합하고 "트렁크"는 "Branch 2"에서 변경 사항을 잃습니다.
해결책
- 작업 사본을 만드십시오
trunk
svn merge -r W:X svn://branchA workingCopy
svn merge -r Y:Z svn://branchB workingCopy
나는 이것이 당신이 원하는 것을 줄 것이라고 생각합니다. 이것은 트렁크와 어느 지점에서의 변경 사항입니다. 그러나 갈등을 다루어야합니다.
다른 팁
Subversion 1.5 이상을 사용하고 있다고 가정하면 지점을 트렁크로 다시 "재 통합"하고 싶다고 생각합니다. http://blog.red-bean.com/sussman/?p=92
당신의 용어는 명확하지 않습니다. 당신이 "b와 병합"이라고 말할 때 그것은 당신이 a를 b 또는 b로 병합한다는 것을 의미합니까? 지점을 만들기 위해 무엇을했는지 정확히 설명 할 수 있고 어떻게 합병을 시도했는지 설명 할 수 있습니까? 또한 병합하려면 사용중인 SVN 버전이 중요합니다.
신중하게 읽어 보는 것이 좋습니다 분기 및 병합에 관한 장 SVN 책에서.
기본적으로, 기능 분기가있는 경우 (이것은 당신이 가지고있는 것처럼 보이는 것), 당신은 분기를 반복적으로 병합합니다. 그런 다음 SVN은 귀하가 병합 한 수정 사항을 기록하고 다시 합병하지 않을 것입니다. 당신이 당신의 지점을 끝내면, 당신은 그것을 트렁크로 통합하여 그것을 무시합니다.
이 모든 것은 디스크, 한 번에 하나의 분기 씩 이루어지며 각 지점 후에 잠재적 충돌을 해결하고 각 단계를 확인합니다. (어떤 이유로 든 한 번의 체크인에서 트렁크에 변경 사항을 적용 해야하는 경우, 지점을 트렁크에서 신선한 지점으로 병합 한 다음 해당 분기를 트렁크로 병합 할 수 있습니다.)
리포지토리가 아닌 작업 공간에 합병을 적용하려고합니다. 또는 SVN보다 훨씬 우수한 방식으로 지점을 다루는 CV를 사용할 수 있습니다.