2010-11-17 4 views
17

Subversion에서 Mercurial로 이전 중이며 SVN-> Hg 변환 프로세스에서 충돌이 발생했습니다. 현재 우리의 단일 SVN 저장소에는 두 개의 별개의 "프로젝트"에 대한 코드가 있으며 마이그레이션 프로세스에서이를 분리하려고합니다. 우리의 SVN의 repo는 다음과 같이 구성되어 있습니다분할 Subversion 저장소를 여러 Mercurial 저장소로 분할 하시겠습니까?

. 
|-- proj1 
| |-- branches 
| |-- tags 
| `-- trunk 
`-- proj2 
    |-- branches 
    |-- tags 
    `-- trunk 

우리는 단순히 proj1proj2 자신의 수은의 repos을하고 싶습니다. 물론 proj1에 대한 특정 기록은 proj2의 로그에도 나타나지 않습니다. 지금은 hg convert이 변환을 수행 할 때 모든 파일을 아주 어리석게 읽습니다. 트렁크와 분기를 구별하지도 않습니다.

디렉토리로 필터링하고 hg convert에서 SVN 분기를 인식하는 프로세스는 무엇입니까?

+1

+1 이것은 많은 중요한 회사에서 중요한 질문입니다. –

+0

@Andres Jaan Tack : 왜 프로젝트가 작업 초기에 분리 된 리포지토리로 구성되지 않았습니까? – zerkms

+1

@erjiang : svn을 사용하여 1 개의 repo에서 2 개의 프로젝트를 사용하는 것이 행복했다면, 같은 (틀린) 스키마와 수은을 사용하지 않는 이유는 무엇입니까?;-))) – zerkms

답변

8

이제는 ConvertExtension wiki page 덕분에 작동했습니다.

Ry4an의 방법을 시도했지만 모든 것을 분할하기 전에 SVN Repo를 중간 Mercurial Repo로 변환해야한다는 단점이 있으며 분기, 트렁크 및 태그는 두 개의 프로젝트가 있기 때문에 인식되지 않습니다. 각각 자신의 가지, 트렁크 및 태그가 있습니다.

내가 그 수동으로 지정하는 지점, 트렁크 및 태그 디렉토리가 한 번에 의욕을 SVN에서 하나 개의 프로젝트를 변환하는 훌륭한 일을 발견

hg \ 
--config convert.svn.trunk=proj1/trunk \ 
--config convert.svn.branches=proj1/branches \ 
--config convert.svn.tags=proj1/tags \ 
convert --authors authors.txt original-svn-dir hg-proj1 

이 인식 처리됩니다 SVN 브랜치, 태그 및 트렁크 에만 proj1 수정 사항 만 동시에 필터링하십시오. 그런 다음 방금 proj2에 대해 반복했습니다.

+0

다행이라고 생각합니다. 여러 svn-> hg 대화의 단점은 svn-> hg 조각이 hg-> hg 조각보다 훨씬 오래 걸린다는 것입니다. 따라서 authormaps, split 등을 얻는 반복적 인 특성을 감안할 때 svn-> hg를 한 번 수행하는 것이 좋습니다 , 그리고 각 프로젝트에 대해 hg-> hg를 (그리고 재실행)하면 대개 시간이 절약됩니다. 또한 증분 변환에 대한 convert의 지원을 사용하려는 경우 (예 : 한 달에 다시이 작업을 수행하여 새로운 svn 항목을 hg hashids로 변경) 단일 svn convert가 필요합니다. –

+0

그것은 로컬 -> 로컬 변환 이었기 때문에 시간상별로 나쁘지 않았습니다. – erjiang

0

이것은 '변환'확장 프로그램을 사용하여 쉽게 수행 할 수 있습니다.

exclude proj1 
rename proj2 . 
: 하나의 프로젝트 그 filemaps

당처럼 라인에서 한 -

  1. 여러 hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo 명령을 할 모든 것을 변덕에 SVN에서 hg convert SVNREPO all-in-one-mercurial-repo을 수행 여기 절차입니다

    all-in-one mercurial repo에서 프로젝트 2의 저장소를 추출 할 때 파일 맵을 사용합니다. 이러한 맵에 개별 파일을 나열해야 할 수도 있지만 디렉토리는 괜찮다고 생각합니다.

    여기에 또 다른 질문이 있습니다. 제가 거의 똑같은 대답을하고 전체 예제를 붙여 넣었지만, 당신을 끌어들일만큼 충분해야합니다.

+0

아마도 이전 질문에 대한 링크가 게시 될 수 있습니까? – erjiang

+0

Oh, also, hg는 git-svn과 같은 지점을 이해할 수 있습니다? – erjiang

+0

네, 일반적인 브랜치 /, 태그 /, 트렁크/트리 구조를 사용했다면 괜찮습니다. –