문제

기존 CVS 저장소에서 SVN 저장소로 변환 중입니다.CVS 저장소에는 브랜스가 거의 없으며 변환하는 동안 브랜치 이름을 바꾸고 싶습니다.

원하는 변환은 다음과 같습니다.

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

즉, CVS HEAD는 일반 브랜치가 되고, CVS 브랜치A는 SVN 트렁크가 됩니다.

CVS와 SVN 저장소는 모두 동일한 Linux 시스템에 있습니다.

어떻게 이런 일이 가능할까요?

또한 CVS 분기A가 SVN 트렁크가 되고 다른 모든 CVS 분기가 무시되는 변환으로도 충분할 수 있습니다.

도움이 되었습니까?

해결책

특히 커밋 기록을 보존하는 데 관심이 있습니다.변환 후 SVN에서 분기 이름을 바꾸고 분기를 이동하면 기록이 보존됩니까?

예.Subversion은 또한 디렉토리 구조의 변경 사항을 추적하고 파일이 트리에서 이동하더라도 모든 버전 기록이 보존됩니다.

저장소를 다음으로 변환하는 것이 좋습니다. cvs2svn, 분기 및 태그 포함.저장소가 Subversion에 있으면 원하는 대로 분기와 태그를 이동할 수 있습니다.이는 또한 이름이 변경된 실제 태그 및 분기의 기록을 유지하므로 나중에 역사적 맥락에서 흥미로울 수 있습니다.

다른 팁

CVS -> SVN 변환을 수행한 지 꽤 시간이 흘렀고, 아마도 중요하지 않은 분기 구조로 변환을 수행한 이후로 훨씬 더 오랜 시간이 걸렸을 것입니다.SVN은 디렉토리 트리를 매우 쉽게 이동할 수 있으므로 전체 변환을 먼저 수행한 다음 나중에 SVN 내에서 트렁크/분기 구조를 완전히 정렬할 수 있습니다.

해당 지점에 도달하여 SVN 내에서 전체 디렉터리 트리를 이동하는 경우 모든 트리 이름 바꾸기/이동 단계 후에 커밋하는 것이 가장 좋습니다.명심해야 할 것이 있습니다.

Subversion 분기는 디렉터리이므로 가져오기가 완료된 후 분기를 이동하면 기록이 손실되지 않습니다.

허용되는 답변을 뒷받침하는 몇 가지 추가 정보는 다음과 같습니다.

cvs2svn은 트렁크에서 브랜치로 또는 브랜치에서 트렁크로의 변환을 허용하지 않습니다.

따라서 일단 svn으로 변환되면 물건을 옮기는 것이 가장 좋은 방법입니다.

변환 후 트렁크 및 분기 디렉터리를 이동할 수 있지만 이를 위해서는 SVN 기록에 남아 있는 명시적인 변환 후 SVN 커밋이 필요하므로 기록 탐색이 좀 더 복잡해집니다.

그러나 실제로 cvs2svn에 다음을 사용하여 원하는 SVN 경로에 대한 트렁크 및 분기를 저장하도록 지시할 수 있습니다. --symbol-hints=symbol-hints.txt 명령줄 옵션 또는 (변환에 옵션 파일을 사용하는 경우) SymbolHintsFileRule('symbol-hints.txt') 기호 전략 규칙, 여기서 symbol-hints.txt 다음과 같은 줄을 포함하는 파일입니다.

. .trunk. trunk branches/branchX .
. branchX branch trunk .

cvs2svn에 의해 자동 생성된 일부 커밋 메시지(예: 브랜치 생성)에는 원래 브랜치 이름이 언급됩니다.

변환이 완료된 후 브랜치 주위를 이동할 수 있지만 cvs2svn 구성 파일을 설정하여 기존 브랜치 각각에 대해 원하는 이름을 정확하게 지정하는 것이 더 나을 수 있습니다.이것의 이점 중 하나는 FishEye가 출력을 훨씬 더 잘 이해할 수 있다는 것입니다.

특히 커밋 기록을 보존하는 데 관심이 있습니다.변환 후 SVN에서 분기 이름을 바꾸고 분기를 이동하면 기록이 보존됩니까?

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