2013-03-05 1 views
2

sourceforge에서 호스팅되는 svn 저장소 작업에 git-svn을 사용하고있었습니다. 최근에 svn 저장소가 변경된 sourceforge 프로젝트를 업데이트했습니다. 정확하게 말하면, 새로운 svn 저장소는 svn + ssh를 사용하여 액세스 할 수 있으며 이전 저장소는 읽기 전용으로 만들어졌습니다.git-svn 및 업데이트 된 svn url

이제 로컬 git-svn 복제 디렉토리에서 .git/config를 업데이트하여 이전 URL을 새 URL로 업데이트하십시오. 내가 자식 svn의 정보 또는 자식 svn의 REBASE를 할 때, 나는 다음과 같은 오류가 발생합니다 : 은 또한 나무의 역사

작업 상류 SVN 정보를 확인할 수 없습니다, 나는 다음과 같은 명령을 사용하여 신선한 자식 - svn을 클론을 생성 : git svn init -T 트렁크 -t 태그 -b branches svn + ssh : //[email protected]/p/dmtcp/code dmtcp-code

이 복제품은 문제가 없으며 아무런 문제가 없습니다. 그것. 그러나 ref는 이전 클론과 다릅니다.

작업을 복잡하게 만들기 위해 github에서 git 저장소를 유지합니다. github은 일단 역사적인 이유로 sourceforge svn에 커밋되면 변경 사항을 적용합니다. 이것은 이전의 sourceforge svn url과 함께 사용되었습니다. 하지만 이제 업데이트 된 리포지토리에서 refs가 엉망이되었습니다. 즉, github의 리포지토리와 일치하지 않습니다.

물론 refs를 업데이트하기 위해 "git push -f"를 할 수 있지만 누군가가 refs를 수정하는 데 어떤 생각이나 아이디어가 있는지 알고 싶었습니다.

감사합니다.

답변

1

git svn은 해당 저장소 에 액세스하는 것 이상의 의미로 svn 저장소의 루트 URL을 사용합니다. 그것은 또한 svn 브랜치를 결정하기 위해 필요하며 (적어도 기본값으로 ) URL은 커밋 메시지에 포함됩니다. 후자의 이유는 입니다. 신선한 복제본이 모든 커밋을 다른 것으로 표시하는 이유입니다.

그러나 실제로는 새로운 URL을 사용하여 저장소에 실제로 액세스하는 동안 다른 목적을 위해 이전 URL을 계속 사용하도록 구성 할 수 있습니다. .git/config 파일의 svn-remote 섹션에 rewriteRoot 항목을 추가하고이를 svn 저장소의 이전 URL로 설정해야합니다. 그 svn에서 업데이 트를 계속 당겨 수 있도록해야합니다.

+0

rewriteRoot에 대해 읽었지만 그 목적을 배우기에 충분한주의를 기울이지 않았습니다. 설명 주셔서 감사합니다 !! (충분한 평판을 얻 자마자 나는 귀하의 답변에 "투표하기":-)) –