2009-09-03 6 views
2

나는 얼마 전에 트렁크에서 만든 브랜치를 가지고있다. 내가 지부를 만들었으므로 트렁크를 건드리지 않았다. 자, 나는 지부에서 몸통으로 돌아가고 싶다. 많은 병합이 없기 때문에 이것은 매우 간단한 경우입니다. 트렁크가 바뀌지 않았습니다. 브랜치는 트렁크를 완전히 대체 할 수 있습니다.SVN/Subclipse : 브랜치에서 트렁크로 돌아 가기

  1. 가 (뭔가 다른 이름을 바꿀 나중에 삭제) 트렁크를 삭제하고 트렁크로 브랜치의 이름을 변경 : 제가보기에는

    , 나는 두 가지 옵션이 있습니다.

  2. 트렁크에 분기를 병합합니다 (내 작업 복사본을 트렁크로 옮기고 분기에서 병합 명령 사용).

어떤 옵션이 선호되는지 잘 모르겠습니다. 수정 컨텍스트를 유지하는 것이 중요합니다 (개정 그래프를 손상시키지 않아야 함).

의견이 있으십니까?

+0

그게 아닌가 http://stackoverflow.com/questions/587603/replacing-trunk-with-branch-in-subversion? – VonC

+0

유사점이 있지만 같은 질문이 아닙니다. 게다가 거기에는 대답이 없습니다. 제 상황이 더 간단합니다. – zvikico

답변

4

당신은 정말 병합 옵션을 사용해야 살펴 보셔야합니다, 그래서 VonC 언급 이전 주제에 대한 답변 중 하나 같았다. subversions 병합 추적은이 정보를 보존하므로 모든 변경 사항이 내부 커밋 일 때 수정 정보를 잃어 버리는 인수는 무시할 수 있습니다. 1.5 이전 버전이 아직 설치되어있는 경우 커밋 메시지의 개정 범위와 분기 경로를 확인할 수 있습니다.

당신이 트렁크에서 아무것도 변경하지 않은 것처럼, 병합 방금 말한대로, 생각할 수 없습니다 :

svn merge branchname <Workingcopy-Path> 

(물론 작업 카피가 트렁크를 가리켜 야)

귀하의 코멘트에 대한 답변 1.4 SVN

더 병합 추적이 없습니다, 당신이해야 하지 롤백

그렇게

분기의 이름을 트렁크로 변경하면 안되는 이유는 무엇입니까?

이것은 간단한 방법으로 작동하지만 트렁크가 삭제되고 모든 파일이 다시 추가되지만 당신의 행동처럼 변경된 파일을 쉽게 추적 할 수 없습니다. 모든 파일이 추가되었습니다.

병합하면 분기에서 변경 한 파일 만 수정 된 것으로 표시됩니다.

이전 트렁크의 작업 copypys는 모두 무효화됩니다 (혼자 일하는 경우 중요하지 않을 수 있음). 다시 체크 아웃해야합니다.

+0

방금 ​​SVN 1.6으로 업데이트되었지만 1.4로 롤백 할 수 있습니다. 그 의미의 차이점은 무엇입니까? Subclipse의 병렬 옵션을 가르쳐 주시겠습니까? 분기의 이름을 바꾸는 것보다이 방법이 좋은 이유는 무엇입니까? – zvikico

0

첫 번째 옵션을 선호합니다. 분기에서 수행 한 모든 수정 사항을 다른 방법으로 트렁크에 하나의 개정판으로 적용합니다. 따라서 변경 사항에 대한 개정 정보가 손실됩니다. 이전 트렁크 디렉토리의 위치로 브랜치를 이동하면 수정 정보가 그대로 유지됩니다.

+0

SVN의 최신 버전은 병합 된 분기에서 커밋 정보를 표시 할 수 있습니다. 최소한 내 TortoiseSVN은이를 허용하고 SVN의 기능인 Tortoise가 아닌 것으로 의심합니다. – sbi

+0

예, 사실입니다. 요점은 아닙니다 : 분기에서 만든 모든 수정 사항은 병합시 트렁크에서 하나의 커밋으로 끝납니다. 따라서 나중에 특정 개정판에서 분기의 일부 변경 사항이 작성된 트렁크에서 요청하는 경우 병합 작업의 일부였습니다. 그런 다음 변경 사항이 실제로 작성된 변경 사항을 지점에서 확인할 수 있지만 더 많은 노력이 필요합니다. – sebasgo

0

나는 가장 좋은 방법이라고 생각하는 가장 쉬운 방법은 "svn move"inorder를 사용하여 첫 번째 옵션을 실행하는 것입니다.

svn의 복사 및 이동은 파일 작업과 마찬가지로 작동해야하며 이러한 변경 사항도 버전이 적용됩니다.

편집 : 내 대답은 거의 당신이 대답