2012-10-17 4 views
5

우리는 일반적인 svn 대신 저장소 시스템으로 git을 사용하여 테스트하고 있습니다. 우리가 항상 필요로하는 하나의 svn 저장소가 있습니다. svn에서 우리는이 저장소를 svn : propternets과 svn : externals로 링크합니다. 이렇게하면 정말로 많이 사용되는 특정 저장소의 전체 복사본이 하나만 존재하게됩니다.Git에서 SVN 저장소 설정 시도

이제 우리는 git 저장소가 생겼으므로 SVN 저장소를 본질적으로 svn : externals과 같은 방식으로 링크하고 싶습니다. 나는 이것을하기에 다소 성공했다. 나는 새로운 것에 대해 무언가를 용서해주십시오. 순수한 자식의 repo에서

(나는 git clone [email protected]:mygitrepo를 통해 복제하는) 내가 사용 :

git svn clone svn+ssh://[email protected]/path/to/mysvnrepo mysvnrepo 

다른 SVN 저장소의 사본을 얻을 수 있습니다. 이것은 훌륭하게 작동하며, mysvnrepo 디렉토리에서 git svn rebase을 통해 SVN 저장소에 새로운 개정판을 가져올 수 있으며 변경 내용은 git svn dcommit을 통해 커밋 할 수 있습니다.

내가 사용되는 기본 자식 저장소이 결합하려면

나는 mysvnrepo 디렉토리로 얻을 동안 지금, 다른 곳 (다시 git clone [email protected]:mygitrepo 포함) 자식의 repo를 복제하면 내가 데 문제가
git add mysvnrepo 
git commit mysvnrepo 
git push 

모든 파일, 나는 SVN repo와 상호 작용할 수 없다. 오류가 발생합니다 : git svn rebase 이후 "작업 트리 기록에서 상류 SVN 정보를 확인할 수 없습니다". 아마도 다른 곳에서 복제 할 때 mysvnrepo 디렉토리에 .git 폴더가 없습니다 (이것은 svn 정보가 원래의 repo에 저장되는 곳입니다).

나는이 문제를 조금 찾아 보았지만, 모든 문제는 다른 문제를 일으키는 반면, 처음에는 문제가 발생하여 svn repo가 ​​작동하지 않는 것으로 보입니다.

아마 내 문제는 어떻게 성공적으로 추가/커밋/자식 repo에 자식 repo 밀어하는 것입니다? 즉 : git add mysvnrepo; git commit mysvnrepot; git push; 이렇게하는 올바른 방법?

편집 : 더 상황을 당신이 뭘하려는 것 같아 당신이 svn:externals 때와 마찬가지로, 다른 내부에 하나 명의 자식 저장소를 포함 무엇

+0

어떻게 저장소를 복제합니까? 'git clone'을 사용하거나 SVN에서 체크 아웃하거나 ...? – siegi

+0

내가 일하는 git 저장소를 의미합니까? 원래의 git 저장소와 다른 사용자를위한 것 'git clone [email protected] : mygitrepo' –

답변

2

을 줄 수 있도록 개선. 포함 된 저장소가 git svn으로 생성 된 것입니다. 그 저장소를 다른 저장소에 포함시키는 방법에 실제로 영향을 미치지 않습니다.

공개적으로 사용 가능한 다른 곳에 포함하려는 git 저장소를 만들어야합니다. 그런 다음 git submodule 또는 git subtree을 사용하여 포함 할 수 있습니다. 정확히 svn:externals과 똑같이 작동하지 않습니다. 은 git 저장소의 다른 사용자에게 더 익숙하지 않을 수도 있습니다.

사용하는 언어와 소프트웨어에 따라 사용량이 많은 리포지토리에 대해 별도의 git 리포지토리를 만들고 자체 독립 실행 형 라이브러리, jar 파일 또는 그로 인해 빌드하는 것을 고려해 볼 수 있습니다. .

위의 내용은 git으로 완전히 전환하려는 경우에만 잘 작동합니다. 일부 팀원이 잠시 동안 SVN에서 계속 작업 할 경우 git substree 또는 git submodule이 작동하지 않습니다.

대신 을 사용하여 svn : externals을 시뮬레이트하기 위해 this question을 살펴보십시오.

동성애 자용으로 모든 사람을 설정하려면 git svn 매뉴얼 페이지의 "Basic Examples"에있는 마지막 예를 따르십시오. 누구나 git clone을 실행할 수 있으며 git svn clone 전체를 수행하는 대신 로컬에서 몇 가지 명령을 실행할 수 있습니다.

+0

문제는 git 저장소를 사용하여 git 저장소에서 svn 저장소로 다시 커밋 할 수있게하려는 것입니다. svn dcommit'. 똑같은 목적으로 글로벌 git 저장소를 만들 수는 있지만 svn 저장소와 별개입니다. 이것은 바람직하지 않습니다. 하나의 해결책은 각각의 사람이 수동으로 svn 저장소에 svn 저장소를 복제하도록하는 것입니다. 그러면 복제 할 수있게해야합니다 (복제 할 때와 같이) –

+0

그 설정에서 수행 할 수있는 작업에 대한 일부 내용을 포함하도록 답변을 업데이트했습니다 . Svn : externals를 사용하여 SVN에서 git으로의 느린/부분 마이그레이션은 다소 어색합니다. 잘하면 그것은 당신이나 당신의 팀을 놀라게하지 않을 것입니다. 일단 익숙하면 git는 정말 멋지다. – jbowes