하나의 Subversion 저장소에서 다른 Subversion 저장소로 여러 폴더 이동
Subversion 1.4.2가 설치된 centOS 6.4 서버가 있습니다. 내 서버에는 두 개의 Subversion 저장소가 있습니다.
나는 지난 2년 4개월 동안 "repoOLD"를 사용해 왔으며 이제 "repoNEW"라는 또 다른 저장소를 만들었습니다.
'repoOLD'에는 100개의 폴더(프로젝트)가 포함되어 있습니다.
"repoNEW"가 방금 생성되었으며 "repoOLD"에서 "repoNEW"로 일부 항목을 복사해야 합니다.
이제 문제는 내 "repoOLD"에서 "repoNEW"로 여러 폴더(프로젝트)를 전송하는 방법입니다.
인터넷 검색을 시도했지만 하나의 Subversion 저장소에서 다른 저장소로 여러 폴더를 이동하는 방법에 대한 튜토리얼을 찾을 수 없습니다
답변1
다른 사람이 Subversion을 직접 사용하여 더 나은 답변을 게시할 수도 있지만 Python의 기능이 훌륭하기 git
때문에 Subversion으로 변환한 다음 다시 Subversion으로 변환하는 접근 방식을 제안하겠습니다 .git
filter-branch
이전 svn 저장소를 로컬 git 저장소에 복제합니다.
git svn clone <url-for-repoOLD>
이제 로컬 git
복제본이 디렉토리에 저장되어 있다고 가정합니다.repoOLD
git clone에서 원하지 않는 모든 것을 필터링하세요.
이제 더 이상 필요하지 않은 새 저장소의 모든 항목을 삭제하십시오.
cd repoOLD
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch dirA dirB dirC dirD' \
--prune-empty --tag-name-filter cat -- --all
... dirA dirB dirC dirD
더 이상 필요하지 않은 디렉토리는 모두 어디에 있습니까? 삭제하려는 항목을 모두 나열해야 합니다.
ls
원하는 내용이 포함되어 있는지 확인하려면 등 을 사용하여 git log
이 저장소를 확인하세요 .
새 svn 저장소를 로컬 git 저장소에 복제하세요.
cd .. # (get out of repoOLD if you are still in there)
git svn clone <url-for-repoNEW>
이제 로컬 git
복제본이 디렉토리에 저장되어 있다고 가정합니다.repoNEW
또한 repoNEW에 아무것도 커밋하지 않았거나 repoOLD에서 아무것도 가져오지 않았기 때문에 이 시점에서는 repoNEW가 완전히 비어 있다고 가정하겠습니다.
git
repoOLD 클론에서 모든 것을 가져옵니다.
cd repoNEW
git remote add repoOLD ../repoOLD
git fetch repoOLD
git merge repoOLD/master
이제 이러한 변경 사항을 repoNEW svn 서버로 다시 푸시하세요.
git svn dcommit