복잡한 전복 저장소에서 분산 버전 제어 시스템으로 마이그레이션하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/839683

문제

우리가 보이는 전복 저장소가 있다고 가정 해 봅시다.

/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)

여기서 Varianta 및 VariantB는 원래 소프트웨어의 포크입니다.

이 저장소를 분산 버전 제어 시스템으로 마이그레이션하는 방법을 찾고 있습니다.

  • 반드시 단일 명령을 할 필요는 없습니다
  • 잘 알려진 분산 버전 제어 시스템 중 하나입니다
  • DVC가 가지를 생각하게 만들기 : /official/ {0.1,0.2} trees, /varianta /trunk tree, ...
  • DVC가 그 나무의 상속 관계를 인식하게 만들기
도움이 되었습니까?

해결책

당신이 고려한다면 git 가능한 DVCS 후보로서 루비 스크립트 svn2git 필요한 것을합니다.

질문에 대한 자세한 내용 : GIT-SVN과 비표준 SVN 저장소 클로닝

다른 팁

Mercurial에는 원하는 작업을 수행 해야하는 변환 확장 기능이 제공됩니다. 참조 수은 웹 사이트에서 확장 세부 사항을 변환합니다.

git의 경우 지침을 참조하십시오 http://github.com/guides/import-from-subversion

마지막으로 수동으로했을 때 아래 명령을 사용했습니다. (이것은 태그 나 가지를 사용하지 않은 프로젝트를위한 것이 었습니다. svn2git 태그 나 분기가있는 경우 git-svn보다 더 나은 결과를 낳을 수 있습니다.)

cat "mysvnusername = Me Myself <me.myself@somewhere.com>" >> 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 git@github.com:mygithubusername/<GIT-REPO-NAME>.git
git push origin master
cd ..
rm -rf <SVN-REPO-NAME>

git clone git@github.com:mygithubusername/<GIT-REPO-NAME>.git

그러나 비표준 SVN 저장소 레이아웃이 있으므로-stdlayout 대신 --trunk,-tags 및 -branches 매개 변수를 지정해야합니다. git svn 클론.

저장소의 전체 상속 기록을 나타내려면 저장소를 재정렬하여 비표준 계층 대신 표준 평면 리포지토리 레이아웃을 가질 수 있습니다.

/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는 깊은 복제를 지원하므로 git svn clone 다음과 같은 매개 변수 --branches=branches/*/* 지점의 계층 구조를 깊이 들여다 볼 것입니다. 보다 이 게시물 그것을 사용하는 예.

$ bzr svn-import-layout trunk1 SVN root-url bzr.repo

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

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