2012-07-12 1 views
2

그래서이 프로젝트는 2 가지 릴리스 인 trunk와 branch1에서 동시에 진행됩니다. 어떤 시점에서 나는 rel1에 대한 빌드를 더 이상 만들지 말고 rel2에서 버그를 수정하라는 말을 듣는다. 그래서 branch1에 트렁크에도 적용 할 수있는 버그 수정을합니다. 후에 나는 "알려진 버그로 rel1을 relisation하면 큰 PITA가 될 것입니다. rel1에서도 수정하십시오."cherrypick svn 분기를 트렁크에 병합 한 다음 나중에 --reintegrate와 병합 하시겠습니까?

그래서, 내 질문은 (. ~/REL1 트렁크의 현재 수정되지 않은 작업 복사본이 RevM, RevN 내가 트렁크에 다시 병합 할 개정의 범위에 대한 BRANCH1의 버전 번호입니다) :

a는

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 

어떻게 트렁크에 지점에서 svn merge --reintegrate 이후에 영향을 미칠 것입니다

나는 경우? RevM 이전에 branch1에 개정이 있고, RevN 이후에 더 많은 것이있을 것이라는 것을 명심하십시오. 특히, 내가 결국 재 통합 할 때, 처음에는 rel1에서 수정을 수행하고 rel2로 병합 한 것처럼 될 것인가?

+0

질문의 시작 부분에 trunk, rel1, rel2 등이 섞여 있습니다. 질문을 더 분명하게하기 위해이 문제를 해결할 수도 있습니다. – janitor048

답변

5

브랜치에서 체리 체리가 트렁크로 바뀌는 것은 항상 내 마음을 비틀어 버리는 것입니다. 여기에 귀하의 경우에 효과가 있어야 할 솔루션이 있습니다. 트릭은 체리 선택 변경 사항이 지점으로 다시 병합되는 것을 차단하는 것입니다.

cd ~/rel1 
svn merge -r RevM:RevN ^/branch1 
svn commit -m "cherry pick RevM:RevN from branch1 into rel1" 

이제이 커밋이 RevX를 생성했다고 가정합니다. 지점으로 이동하여 --record-only 옵션을 사용하여 향후 병합 작업에서이 수정본을 차단하십시오. 당신이 그것으로 완료되면

cd ../branch1 
svn merge -c RevX --record-only ^/rel1 
svn commit -m "mark RevX as already merged to block it from future merge actions" 

이제 REL1에 지사를 재 통합하는 것이 평소와 같이 다시 rel1에서 branch1에 추가 변경을 병합 할 수 및 있어야한다.

+0

이것은 svn 1.5에서 작동해야합니다. 나는 때때로 svn에서 1.6에서 그런 경우를 좀 더 영리하게 처리해야한다고 읽었습니다. 그래서 차단이 항상 필요한 것은 아닙니다. 나는 그것이 정말로 사실인지 정말로 모른다. 나는 내일 시험 시나리오를하려고 노력할 것이다. 전반적으로 제 생각에 svn이 작동하는 방식으로 지점에서 체리를 트렁크로 가져 오는 것이 실제로 잘 지원되지 않습니다. – janitor048

+0

나는 그것이 옳다는 것을 완전히 확신하지는 않지만 이것을 받아 들일 것입니다. 병합을 수행하는 지점이 결코 다시 통합되지 않을 것으로 보이기 시작했기 때문에 어떤 일이 일어 났을 지 결코 확신 할 수 없을지도 모릅니다. – wades