어떻게 이동이 단일 폴더에서 하나 Subversion 저장소를 다른 저장소?
-
03-07-2019 - |
문제
나는"문서"폴더에 파괴 저장소는"프로젝트".나는 결론에 도달하는 것을 정말로 보관되고 별도의 Subversion 저장소의 이름이"project_docs".
고 싶을 이동하는"문서"폴더(및 그것의 모든 개정 이)"project_docs"장합니다.는 방법이 있을까요?
해결책
액세스할 수 있는 경우에 저장소에 자신(일본),당신은 덤프 다음을 수행할 수 있습니다 현재 저장소,필터링하여만에 대한 정보가 포함되어 있습니다 문서 폴더를 다른 저장소.
은 다음과 같이 될 것이다:
svnadmin dump /svn/old_repos > ./repository.dump
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./repository.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump
액세스하지 않고 저장할 수는 없습 유지할 수정을 기록하고 정착을 위해 파일을 복사로 새로운 저장소 및 커밋.
다른 팁
SVNDUMPFILTER는 심각한 결함이 있습니다. 파일이나 경로를 필터링하는 경로에서 파일이나 경로를 복사 한 경우 필터링하는 경로에서 필터링하는 경우 SVNDUMPFILTER는 기록을 작성할 수 없으며 작업이 실패합니다.
당신이 사용할 수있는 svndumpfilter2 이 문제를 경험하면.
이것은 SVN 문서에서 설명합니다. 확인하십시오 저장소 유지 보수 섹션 svndumpfilter
... 중앙 저장소에서 프로젝트를 덤프하는 방법에 대해 구체적으로 설명하고 새롭고 별도의 리포지토리로 옮기는 방법을 설명합니다.
나는 당신이 원격으로 그것을 할 수 있다고 믿지 않습니다 (즉, 현지 사본없이). 그러나 이것은 작동해야합니다. svn export
그렇다면 원래 서버의 폴더입니다 svn add
새로운 리포지토리에.
처럼:
$ svn checkout svn://example.net/newrepo .
$ svn export svn://example.com/oldrepo/mydir ./mydir
$ svn add ./mydir; svn commit
편집 : D 'Oh, 이것은 역사를 떨어 뜨립니다. 사용 svnadmin
~처럼 사무엘은 설명합니다.
향후 참조 :
SVN 문서화는 다음과 같습니다.
최상위 디렉토리를 제거하기 위해 덤프 파일을 수동으로 편집 할 계획이라면 편집기가 자동으로 종료 문자를 기본 형식 (예 : r n to n)으로 자동 변환하도록 설정되어 있지 않은지 확인하십시오. 컨텐츠는 메타 데이터에 동의하지 않습니다. 이렇게하면 덤프 파일이 쓸모가 없습니다.
SED 또는 VIM을 사용하여 최상위 디렉토리를 대체하지만 이 디렉토리 이름은 프로젝트 파일 내부에도 포함되어 있습니다.!!!! !!!! 이로 인해 SVN로드 체크섬 오류가 발생합니다.
따라서이 작업을 수행 할 때는 경로 이름 만 SED로 문자열 대체를하지 마십시오.
“Node-Path : Old_path”를“Node-Path : New_Path”로 대체하십시오. 자세한 내용은 SVN 도서 5 장“저장소 관리”를 참조하십시오.
내가 사용하려고 허용되는 대답이 있었는데 거대한 저장고를 내보내는 작은 디렉토리,그리고 여유가 없었어를 덤프 전체합니다.
그래서 나는 수출 버전이 나는 디렉터리로 변경(이 작동하지 않을 수 있습니다면 디렉토리할 수출해야에 대한 참조 다른 곳에서 당신의 repo).
svn log URL_to_docs | awk '/^r/{gsub(/^r/,"",$1);print $1}' > revisions.txt
#tac for revisions in reverse (oldest revision first)
tac revisions.txt | while read line; do svnadmin dump /svn/old_repo -r$line >> ./docs_revisions.dump ; done
#You don't have to filter if you commited only files in your directory docs in your exported revisions
svndumpfilter include path/to/docs --drop-empty-revs --renumber-revs --preserve-revprops < ./docs_revisions.dump > ./docs_only.dump
svnadmin load /svn/new_repos < ./docs_only.dump
대체해야 합니다 당신의 repo URL(URL_to_docs
),위치에서 서버(/svn/old_repo
다)및 경로에 문서를 저장소(path/to/docs
)
쉽게 편집할 수 있습니다 docs_only.dump
는 경우에 당신을 변경하려는 위치의 문서 디렉토리에서 당신의 새장합니다.