어떻게 이동이 단일 폴더에서 하나 Subversion 저장소를 다른 저장소?

StackOverflow https://stackoverflow.com/questions/417726

문제

나는"문서"폴더에 파괴 저장소는"프로젝트".나는 결론에 도달하는 것을 정말로 보관되고 별도의 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 는 경우에 당신을 변경하려는 위치의 문서 디렉토리에서 당신의 새장합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top