2009-05-08 4 views
3

의 우리가 VARIANTA 및 variantB 원래 소프트웨어의 포크 곳 복잡한 Subversion 저장소에서 분산 버전 제어 시스템으로 마이그레이션하는 방법은 무엇입니까?

/original/0.1 
/original/0.2 
/variantA/trunk 
/variantA/branches/who/branch_for_xxx 
/variantA/branches/she/branch_for_yyy 
/variantB/trunk 
/variantB/branches/who/branch_for_zzz 
(... 30 or 40 alike) 

처럼 보이는 Subversion 저장소가 있다고 가정하자.

내가 분산 버전 관리 시스템에이 저장소를 마이그레이션하는 방법을 찾고 있어요

: 잘 알려진 분산 버전 관리 시스템을 중 어느 하나의 방법

  • 반드시 하나의 명령을 wigh하지
  • DVCS는 나뭇 가지들을 생각하고 : 그 나무의 상속 관계를 인식하도록 DVCS을 /official/{0.1,0.2} 나무,/VARIANTA/트렁크 나무, ...
+0

어떻게 접근 하는가는 주로 어떤 DVCS를 사용 하느냐에 달려 있습니다. –

답변

2

, 나는 아래의 명령을 사용 http://github.com/guides/import-from-subversion

에서 내가 수동으로했던 지난 시간에 지침을 참조하십시오.

cat "mysvnusername = Me Myself <[email protected]>" >> authors.txt 

svnserve --daemon --foreground --root <SVN-REPO-PARENT-DIR> 
git svn clone --stdlayout --authors-file=authors.txt --no-metadata svn://localhost/<SVN-REPO-NAME> 

# push to a public repo and clone from there, to get push/pull working easily 
cd <SVN-REPO-NAME> 
git remote add origin [email protected]:mygithubusername/<GIT-REPO-NAME>.git 
git push origin master 
cd .. 
rm -rf <SVN-REPO-NAME> 

git clone [email protected]:mygithubusername/<GIT-REPO-NAME>.git 

(이. 당신이 태그 또는 지점을 가지고있는 경우 자식 - svn을보다 더 나은 결과가 발생할 수 있습니다 svn2git 사용. 태그 또는 지점을 사용하지 않은 프로젝트에 대한했다)하지만 당신은 표준이 아닌 SVN 저장소 레이아웃이 있기 때문에 git svn clone의 경우 --stdlayout 대신 --trunk, --tags 및 --branches 매개 변수를 지정해야합니다.

/branches/original-0.1 
/branches/original-0.2 
/branches/variantA-trunk 
/branches/variantA-who-branch_for_xxx 
/branches/variantA-she-branch_for_yyy 
/branches/variantB-trunk 
/branches/variantB-who-branch_for_zzz 
... 

가 쉽게해야한다 : 대신에 표준이 아닌 계층 구조는 표준 평면 저장소 레이아웃을 것이다 있도록

이 저장소의 전체 상속 역사를 표현하기 위해, 당신은 당신의 저장소를 재정렬 시도 할 수 가져 오기 도구를 사용하여 저장소를 이해할 수 있습니다. 그런 다음 가져온 후에는 새 저장소에서 더 잘 재구성 할 수 있습니다.

Git 1.6.x는 딥 복제를 지원하므로 --branches=branches/*/*과 같은 매개 변수를 git svn clone에게 줄 수 있습니다.이 매개 변수는 브랜치의 계층 구조를 깊이 조사합니다. 사용 예는 this post을 참조하십시오.

+1

+1.내 자신의 대답보다 훨씬 더 실질적인 세부 사항이있는 좋은 게시물 – VonC

+0

최근 SVN-to-Git 변환을했는데 일부 프로젝트 패치는 역사 수정에 도움이되었습니다. 나는 내 블로그에 그것에 대해 썼다 : http://blog.orfjackal.net/2009/05/converting-confused-svn-repositories-to.html –

1

$ BZR의 SVN 가져 오기 --layout trunk1 SVN-루트 URL이

bzr.repo 옳은 일을해야한다. 이 작업을 수행하려면 bzr-svn 플러그인을 설치해야합니다.

관련 문제