문제

CVS2SVN을 사용하여 저장소를 변환합니다. 나는 하나의 저장소에서 성공을 거두었고 이제 내 새로운 문제는 두 번째 저장소입니다.

새로운 전환에서 헤드와 하나의 분기 만 변환하고 싶습니다. CVS2SVN은 분기에 대한 "제외"기능 만 있지만 "포함"은 아닙니다. 나는 많은 지점이 많고 그들 각각을 배제하는 것은 많은 일을 할 것입니다 ....

트렁크 (헤드)와 하나의 분기 만 변환하는 방법이 있습니까?

감사합니다, OD

도움이 되었습니까?

해결책

한 가지만 유지하려는 경우 그리고 태그가 없습니다, 그러면 쉽습니다. 기호와 일치하는 첫 번째 규칙이 사용되므로 포함하려는 분기를 지정한 다음 다른 모든 것을 제외하십시오.

cvs2svn --force-branch=mybranch --exclude='.*' ...

분기뿐만 아니라 가능한 한 많은 태그를 포함시키고 싶다면 조금 까다 롭습니다. 모든 태그의 이름을 반드시 알뿐만 아니라 제외 된 분기에 의존하는 태그를 포함 할 수는 없습니다. 이 경우-write-symbol-info 및 -symbol-hints 옵션과 함께 작동하는 것이 가장 쉽습니다.

cvs2svn --write-symbol-info=symbol-info.out --passes=1:3 ...

이렇게하면 모든 CVS 기호에 대한 정보가 포함 된 "Symbol-Info.out"라는 파일이 생성됩니다. 편집자 에서이 파일을 열고, 배제하려는 지점에 해당하는 모든 줄을 찾아서 해당 줄의 세 번째 열을 "제외"라는 단어로 변경하십시오. 포함하려는 분기 라인의 세 번째 열에 "Branch"라는 단어가 포함되어 있고 네 번째 열에는 끝나는 경로인지 확인하십시오.

이제 CVS2SVN을 다시 실행하여 Pass 3에서 시작하여 편집 된 Symbol-INFO 파일을 Symbol Hints 파일로 사용하십시오.

cvs2svn --symbol-hints=symbol-info.out --passes=3 ...

다음과 같은 많은 오류가 발생합니다.

ERROR: ExcludedSymbol('FOO_BRANCH') cannot be excluded because the following symbols depend on it:
    BAR_TAG
    BAZ_TAG

이제 편집기로 돌아가서 나열된 태그 (예제의 Bar_tag 및 Baz_tag)를 변경하여 배제한 다음 Pass3를 다시 실행해보십시오. 이 절차는 몇 번 반복해야 할 수도 있지만 Pass3가 매우 빨리 실행되기 때문에 번거롭지 않아야합니다.

오류없이 완료하기 위해 패스3을 얻었을 때 나머지 변환을 실행하십시오.

cvs2svn --symbol-hints=symbol-info.out --passes=4: ...

다른 팁

한 가지 문제는 CVS2SVN이 분기를 포함할지 여부를 결정해야 할뿐만 아니라 기호가 처음에 분기인지 태그인지 (동시에) 결정해야한다는 것입니다. 따라서 해당 한 가지와 일부 태그를 포함시키려면 "해당 분기 만 포함"하는 것이 더 어렵습니다. 그렇게하면 모든 태그를 죽일 수 있습니다.

IOW, CVS2SVN은 실제로 그것을 지원하지 않습니다. 소스 코드를 편집하여 작업 할 수 있습니다. cvs2svn_lib.symbol_strategy.branchifcommits에서 Branch (기호)을 반환하는 경우를 변경하십시오.

   if symbol.name == 'my_branch':
       return Branch(symbol)
   else:
       return ExcludedSymbol(symbol)

IIUC, BranchIfCommits는 기본적으로 사용해야합니다.

개인적으로 나는 다른 전략을 사용합니다.

 1. convert the repository once, with all branches.
 2. do a "svn ls" on branches, and redirect that into a file.
 3. edit the file to construct an exclude regex out of it, of the form `b1|b2|...|bn`

나는 그것을 많은 일이라고 부르지 않을 것입니다 ...

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