2009-08-13 7 views
3

몇 주 전에 SVN 저장소의 트렁크를 변경하기 시작했습니다.브랜치를 다시 트렁크에 병합 할 때 SVN 충돌을 피하는 방법

: 변화가 내가 그것을 바로 트렁크에 내 변화를 확인하기 위해 너무 위험했다 결정, 생각, 그래서이 같은 지점을 만든 것보다 더 큰 의미를 가지고 실현 작업의 몇 시간 후

,

svn copy . https://my_svn_server/svn/blah/branches/my-branch 

... 그런 다음 svn 스위치를 수행하고 해당 분기에서 계속 행복하게 작업을 계속했습니다. 지금까지는 모든 변화에 만족하고 다시 트렁크에 병합하기를 원할 때까지는 너무 좋아. 그래서 나는 내 지부로의 모든 변화를 확인한 다음, 표시된 절차를주의 깊게 따르십시오. here ... 여기 제가 곤경에 처한 곳입니다. 로컬 (클라이언트 측) 저장소에서 my-branch를 생성 했으므로 이미 많은 수의 (체크인되지 않은) 변경 사항이 미결 된 병합에는 변경 사항에 해당하는 diff가 포함되지 않으므로 내가 손으로 해결해야하는 병합에 많은 갈등이 있습니다. 내가 엉망으로 만들면 버그가 들어갈 수있는 공간을 남겨 둡니다.

내가 병합 중에 지정한 개정 번호를 줄임으로써 누락 된 diff를 포함 시키려고했습니다. 대신 예상

svn merge -r2819:2932 https://my_svn_server/svn/blah/branches/my-branch 

svn merge -r2818:2932 https://my_svn_server/svn/blah/branches/my-branch 

을하고 ...하지만 내-분기 개정 2818 존재하지 않았기 때문에 즉, 작동하지 않았다, 그래서 난 그냥 오류가 발생하여 :

svn: Unable to find repository location for 'https://my_svn_server/svn/blah/branches/my-branch' in revision 2818 

나는 이번에는 엉망진창을 수동으로 분류 할 수 있지만, 다음번에 상황이 나아질 수 있도록이 문제를 처리 할 수있는 방법이 있는지 궁금합니다.

로컬 (클라이언트 측) 리포지토리를 복사하지 않고 my-branch를 만드는 것이 아니라 SVN 트렁크 HEAD의 복사본을 만든 다음 my-branch를 별도로 체크 아웃하는 방법이 생각납니다. 디렉토리에 저장하고 트렁크 디렉토리에서 내 브랜치 디렉토리로 수동으로 로컬 (체크하지 않은) 변경 사항을 복사 한 다음 로컬 트렁크로 직접 되돌려 놓으십시오.하지만 꽤 지루하고 오류가 발생하기 쉽습니다.

로컬 (체크 인되지 않은) 변경 사항이 포함 된 분기를 만들고이를 나중에 트렁크에 다시 병합하는 것이 더 나은 자동 방법입니다.

답변

7

마지막 제안이 거의 있습니다. 분기 할 때 트렁크 HEAD를 복사하십시오. 그런 다음 작업 복사본에서

svn switch https://my_svn_server/svn/blah/branches/my-branch 

이렇게하면 모든 로컬 수정 사항을 유지하면서 분기로 전환됩니다. 그런 다음 필요할 때마다 변경 사항을 분기에 적용 할 수 있습니다.

+0

쿨, 나는 svn 스위치가 내 로컬 편집을 유지할 줄 몰랐습니다. 그건 내가 누락 된 것입니다. ^) –

+0

흠, 글쎄, 당신의 로컬 편집을 유지하려고 노력할 것입니다. –

+0

내 대답은 트렁크 HEAD가 새 지점 HEAD와 동일하다는 가정하에 작성되었습니다. 트렁크에서 충돌하는 다른 변경 사항이있을 경우 로컬 편집을 성공적으로 유지할 것이라고 보장하지 않습니다. – bobDevil

1

좋아요, 나는 합병을 깔끔하게하는 방법을 생각해 냈습니다. (재미있는 질문을 구성하는 것이 종종 문제를 명확히하는 방법입니다. 그렇죠?). 해결 방법은 두 가지 병합을 수행하는 것입니다. 하나는 주 분기 (원래의 분기)와 내 분기의 시작점 사이의 차이점을 설명하고 두 번째 병합은 내 분기의 후속 변경 사항을 설명하기위한 것입니다.

svn merge https://my_svn_server/svn/blah/trunk/[email protected] https://my_svn_server/svnblah/branches/[email protected] 
svn merge -r2819:2932 https://my_svn_server/svn/blah/branches/my-branch 
관련 문제