2011-02-01 4 views
1

커밋을 유지하면서 자식 저장소를 가져 와서 기존의 Subversion 저장소에 새로운 (임의의 깊이 중첩 된) 디렉토리로 가져 오는 더 좋은 방법이 있습니까? 역사? 나는 다음 (간체) 디렉토리 구조와 전복의 환매 특약이있는 경우히스토리 유지 보수 중에 Subversion 저장소의 하위 디렉토리로 가져 오기

예를 들어, :

backends 
backends/A 
backends/B 

와 나는 자식의 repo에 새로운 백엔드 C에서 일한지, 지금 추가 할 backends/C으로 svn 저장소에 자식 repo의 내용.

내가 찾은 대부분의 정보는 최상위 수준 (일반적으로 새로 생성되었거나 다른 경우 비어있는 svn 저장소)으로 가져 오는 데 초점을 맞추는 것 같습니다.

내 현재의 접근 방식은 다음 자식 SVN과 자식 REBASE를 사용 backends/C

git filter-branch --index-filter \ 
     'git ls-files -s | sed "s-\t\"*-&newsubdir/-" | 
       GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ 
         git update-index --index-info && 
     mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD 

에 아래 자식의 repo의 기존 최상위을 밀어 자식 필터 - 지점 man 페이지에서 다음 코드를 사용하는 것입니다 svn repo에 파일을 가져올 수 있습니다. 이것이 대부분의 사람들이 그것을하는 방법입니까, 아니면 "더 나은"방법입니까?

답변

2

git repo를 모두 svn subdir에 위탁하고 git에 표시되지 않는 나머지 svn repo를 신경 쓰지 않으려면 main 대신 svn 하위 디렉토리에서 git-svn을 지정할 수 있습니다 국장님.

예제로 제공 한 간략한 디렉토리 구조가 실제로 모두 trunk /에 있다고 가정하면 git-svn을 설정할 때 git svn init -Ttrunk/backends/C url 또는 git svn init --prefix=backends/C/ url과 같은 작업을 수행하게됩니다. 이러한 정확한 명령 arent 그래서 설명서를 참조하십시오하지만이 당신을 시작할 수 있기를 바랍니다.

+0

svn subdir에서 가리킨 git-svn이 잘 작동했습니다. 감사합니다. –

관련 문제