2013-11-22 3 views
2

git- 저장소로 변환하려는 SVN- 저장소가 있습니다. 이를 달성하기 위해 svn2git을 사용하고 있습니다. 불행히도 도구가 태그를 올바르게 가져 오는 데 문제가있는 것 같습니다.svn2git가 태그를 올바르게 가져 오지 못했습니다.

.../branches 
.../tags 
     project-version-5.2.5/ 
     project-version-5.3.0/ 
     project-version-5.3.1/ 
     project-version-5.4.0/ 
     project-version-5.5.0/ 
     project-version-5.5.1/ 
     project-version-5.5.2/ 
     project-version-5.5.3/ 
     project-version-5.5.4/ 
     project-version-5.6.0/ 
     project-version-5.6.1/ 
     project-version-5.6.2/ 
     project-version-5.6.3/ 
     project-version-5.6.4/ 
     project-version-5.6.5/ 
     project-version-5.6.6/ 
     project-version-6.0.0/ 
     project-version-6.0.1/ 
     project-version-6.0.2/ 
     project-version-6.1.0/ 
     project-version-6.1.1/ 
     project-version-6.1.2/ 
     project-version-6.2.0/ 
     project-version-6.2.1/ 
.../trunk 

을하지만 자식 저장소는이 표현되지 않은 : 내 SVN -repository은 다음과 같습니다. 태그는 다음과 같습니다.

bash:~$ git tag 
project-version-5.2.5 
project-version-5.3.0 
project-version-5.3.1 
[email protected] <-- I have no idea, where that is coming from... 
project-version-5.4.0 
project-version-5.5.0 
project-version-5.5.1 
project-version-5.5.2 
project-version-5.5.3 
project-version-5.5.4 
project-version-5.6.0 
project-version-5.6.1 
project-version-5.6.2 
project-version-5.6.3 
project-version-5.6.4 
project-version-5.6.5 

누락 된 태그가 있습니다. 어떤 이유로 원격 지점으로 저장됩니다 :

bash:~$ git branch -r 
    svn/tags/[email protected] <-- Yay, random numbers! 
    svn/tags/project-version-5.6.6 
    svn/tags/[email protected] <-- And another one. 
    svn/tags/project-version-6.0.0 
    svn/tags/project-version-6.0.1 
    svn/tags/project-version-6.0.2 
    svn/tags/project-version-6.1.0 
    svn/tags/project-version-6.1.1 
    svn/tags/project-version-6.1.2 
    svn/tags/project-version-6.2.0 
    svn/tags/project-version-6.2.1 
    svn/trunk 

무슨 일입니까?

편집 : svn2git http://path/to/repository --no-minimize-url --verbose --username='username' --trunk trunk --nobranches --tags tags

Edit2가 : 내 명령을 추가하는 것을 잊었다 난 그냥 확인하고 겉보기에 임의의 숫자가 태그에서 만들어진 -repository SVN의 개정, 실제로 것을 발견했다. 다소 이상하게도 20 개 태그 중 3 개 태그 만 수정본을 가져옵니다 ...

편집 3 : 명백히 문제는 "을 포함하는 하나의 태그의 주석과 관련이 있습니다. svn2git" 벗어나 분명한 이유 실패

git tag -a -m "blablabla "blablabla"." "[email protected]" "svn/tags/[email protected]" 

처럼 뭔가를하려고하지 않기 때문에 그 일 이후 모든 태그, 나뭇 가지로 저장됩니다. 나는 아직도 어떤 생각이 들지 않는다. 왜 일부 태그에 대해 개정 번호를 추가 하는가? 누구든지이 문제를 극복하는 방법에 대한 제안이 있으면 매우 감사 할 것입니다.

편집 4 : 이스케이프 문제에 대한 해결책을 찾았습니다. svn2git 소스의 이스케이프 기능은 다소 이상합니다 ... '\''으로 작은 따옴표 (') 만 대치합니다. 끝났어 ...

답변

1

큰 따옴표 붙이기를 추가하여 문제를 해결했습니다. 이 변경이 이미 github에 제안 된 이후로 나는 그것에 대한 또 다른 풀 요청을 시작하지 않았습니다. 같은 문제로 다음 하나지만, 여기에 내가 무슨 짓을 :

  1. locate migration.rb - 내 경우에는이
  2. (현재 라인 335-337에서 찾을 수) escape_quotes()의 정의를 찾아
  3. /var/lib/gems/1.9.1/gems/svn2git-2.2.2/lib/svn2git/migration.rb에 있었다 몸에 .gsub("\"", "\\\"") 추가

나는이 같은 문제로 시간이 사람을 도움이 될 것입니다 희망 :

+0

여기서 github 스레드는 무엇입니까? 나는 똑같은 문제가 있지만 나중에 수년이 지났습니다. 코드는 지금은 조금 다르며 몸에'str.gsub (/ '| "/) {| c |"\\ # {c} "}'를 포함하고 있지만 루비에 대해 잘 알지 못합니다. 너는 나를 도와 줄 수 있니? – lvthillo

1

나는 @nnn 태그에 대해 궁금해 할 때이 질문을 발견했습니다. 다른 사람이 같은 찾고있는 경우에 따라서는 git svn manual에 설명 된 것 : 자식 SVN은 나뭇 가지를 가져 오기 (그리고 --follow-가지 효과입니다)하도록 구성되어있는 경우

, 때로는 하나의 SVN에 대해 여러 힘내 분기를 생성 branch, 여기서 브랜치 이름은 branchname @ nnn (nnn은 SVN 개정 번호)의 이름을 갖습니다.git svn이 다른 브랜치의 히스토리에 브랜치를 연결하기 위해 SVN 브랜치의 첫 번째 커밋에 대한 상위 커밋을 찾을 수없는 경우 이러한 추가 브랜치가 작성됩니다.

관련 문제