2017-11-07 4 views
0

여러 프로젝트가 포함 된 기존 svn 저장소를 여러 git 저장소로 이동하려고합니다.다중 프로젝트 SVN 저장소를 가져 오지 않아도 svn copy로 생성 된 모든 파일을 가져 오지 못합니다.

저장소 설정은 다음과 유사합니다. https://daneomatic.com/2010/11/01/svn-to-multiple-git-repos/ 및 그 게시물의 제안에 따라 - 오래된 것으로 간주되어 저장소가 올바르게 분할됩니다.

프로젝트를 다른 저장소로 분할하는 실제 과정은 괜찮습니다.하지만 svn 저장소로 가져 오기를 수행하면 가져 오기가 완료된 후에 여러 파일과 폴더가 존재하지 않습니다. SVN의 로그들이 (예를 들면, trunk를 지정 filter-branch을 사용하는 것과 상관없이 내가 git svn clone을 실행할 때 실험 무엇을 플래그 SVN 트리에서 다른 위치에서 복사하지 않으며, SVN했던 것으로 나타났다 곳

나는 파일 및 폴더에 아래로 추적 그리고 비슷한) git-svn은 svn cp를 해결할 수 없어 가져 오기가 완료된 후에 파일과 폴더가 누락 된 것으로 보입니다.

나의 이론은 git svn 가져 오기가 svn 복사본을 "확인"하지 못한다는 것입니다. 전체 저장소의 전체 가져 오기를 수행 할 때도 문제의 파일이 여전히 누락되어 있으며 일반적인 svn 체크 아웃과 비교하여 몇 가지 누락 된 파일과 폴더를 정확히 찾아 낼 수 있습니다.

누구나 이것에 대한 경험이 있습니까, git svn에 사용할 수있는 플래그 또는 도구 제안으로 이와 같은 가져 오기를 완료 할 수 있습니까? 나는 역사를 다소 손상시키지 않고 수입품을 완성하고 싶다.

답변

1

한 번만 마이그레이션 할 경우 git-svn이 아니며은 리포지토리 또는 리포지토리의 일부를 변환하는 데 적합한 도구입니다. Git을 기존 SVN 서버의 프론트 엔드로 사용하려는 경우 훌륭한 도구이지만 일회성 변환의 경우 이 아닌git-svn을 사용해야하지만 svn2git은이 사용 사례에 훨씬 적합합니다.

svn2git이라는 도구가 많이 있습니다. 가장 좋은 도구는 https://github.com/svn-all-fast-export/svn2git의 KDE입니다. 그 svn2git 도구를 사용하는 것이 좋습니다. 내가 사용할 수있는 최선의 방법이며, 규칙 파일을 통해 할 수있는 일에 매우 유연합니다.

svn2git의 규칙 파일을 구성하여 현재 SVN 레이아웃에서 원하는 결과를 생성 할 수 있습니다. 존재할 수있는 복잡한 내역을 포함하여 여러 개의 Git repos 중 하나를 SVN 저장소로 생성하거나 다른 조합을 포함하여 쉽게 결과를 생성 할 수 있습니다 원한다면 SVN을 하나의 Git repo에 깨끗하게 리포지셔닝 할 수 있습니다.

svneverever에서 http://blog.hartwork.org/?p=763까지의 기록은 Git으로 마이그레이션 할 때 SVN 저장소의 기록을 조사하는 훌륭한 도구입니다.

  • 역사는 훨씬 더 깨끗 재 구축 :


    비록 git-svn, 여기, 뛰어난 유연성 외에 대신 git-svn의 KDE svn2git을 사용하는 이유를 몇 가지 더 이유가로 시작하는 것이 더 쉽습니다 svn2git (올바른 것이 사용 된 경우) 이것은 특히 분기 및 병합 등이 포함 된 더 복잡한 기록의 경우입니다.

  • 태그는 실제 태그이며 Git에서 분기하지 않습니다.
  • git-svn과 함께 사용하면 태그에 빈 커밋이 추가되어 분기에 포함되지 않으므로 기본으로 --tags을 지정하기 전까지는 보통 fetch이 가져 오지 않습니다. 페치 된 분기를 가리키는 태그도 기본적으로 가져옵니다. 적절한 svn2git 태그가 자신이 속한 곳이다 사용하면 SVN에서 레이아웃을 변경 한 경우
  • 은 쉽게, svn2git와이를 구성 할 수 있습니다 git-svn 당신이 svn2git와 역사 결국
  • 을 잃어 버리게된다 당신은 쉽게 여러 Git 저장소에 하나 명의 SVN 저장소를 분할 할 수 있습니다
  • 또는 변환이 gazillion 배 빠른 올바른 svn2git와와보다 쉽게 ​​
  • 하나 개 Git 저장소에 같은 SVN 루트에 여러 SVN 저장소를 결합 git-svn

git-svn이 더 나으며 KDE svn2git이 우월한 데는 여러 가지 이유가 있습니다. :-)

+0

KDE svn2git 도구를 살펴 봤지만 문서가 KDE 마이그레이션에 맞게 조정되어있어 작동하지 않을 것이라고 생각했습니다. 귀하의 대답은 실제로 조사할만한 가치가있는 것처럼 보입니다. 내가 그걸 가지고 도망 갔을 때 나는 다시보고 할 것이다. –

+0

나는 도구를 다운로드하여 저장소 사본에서 성공적으로 실행할 수있었습니다. 그것은 엄청나게 빠르다. - 내가 알 수있는 한, 저장소 위치에'.git' 폴더 내용 만 생성한다. - 파일이 들어있는 실제 저장소를 얻으려면 어떻게해야 하는가? 단계가 빠졌습니까? –

+0

이것은 KDE에 전혀 맞지 않는 절대적으로 일반적인 것입니다. 체크 아웃을 놓친 것일까 요? 마지막으로 사용한 지 오래되었습니다. 나는 당신이 그 때 복제 할 수있는 벌거 벗은 repo 또는 당신이 체크 아웃해야하는 non-bare를 생산하는지 여부를 완전히 크기가 아니다. – Vampire

관련 문제