programing

SVN 저장소를 다른 SVN 저장소로 마이그레이션하려면 어떻게합니까?

nasanasas 2020. 12. 10. 20:30
반응형

SVN 저장소를 다른 SVN 저장소로 마이그레이션하려면 어떻게합니까?


모든 기록을 복사하여 한 저장소에서 다른 저장소로 디렉토리를 복사하는 간단한 방법이 있습니까?


가장 간단한 방법은 다음을 사용하는 것입니다.

svnadmin dump path/to/repos > repos.out

이렇게하면 파일에 저장소 (기록 포함)에 대한 이식 가능한 형식이 생성됩니다 repos.out. 그런 다음 사용할 수 있습니다.

svnadmin load path/to/newrepos < repos.out

'덤프 된'저장소를 신규 또는 기존 저장소로로드합니다.

5 장. 리포지토리 유지 관리-> 리포지토리 데이터 마이그레이션 다른 곳에서는svnadmin dump 버전 1.7부터 사용에 대한 다음 참고 사항이 있습니다 .

Subversion 저장소 덤프 형식은 버전이 지정된 저장소 변경 사항 만 설명합니다. 커밋되지 않은 트랜잭션, 파일 시스템 경로에 대한 사용자 잠금, 저장소 또는 서버 구성 사용자 지정 (후크 스크립트 포함) 등에 대한 정보는 전달하지 않습니다.


Subversion 책 에서 제안한대로 :

svnadmin dump path/to/repos_src \
    | svndumpfilter include path/inside/svn/to/directory \
    | svnadmin load path/to/repos_dst

예를 들어 :

svnadmin dump /var/lib/svn/old_repo \
    | svndumpfilter include trunk/my_project/common_dir \
    | svnadmin load /var/lib/svn/new_repo

기록을 원하지 않는 경우 svn export폴더없이 깨끗한 폴더를 .svn가져온 다음 svn import다른 저장소로 가져올 수 있습니다 .

히스토리가 있으면 svnadmin dump. 그런 다음 svndumpfilter을 사용하기 전에 사용하려는 부품 또는 경로 만 필터링하는 데를 사용 svnadmin load합니다.

읽을 주제 :


svnsync— Subversion Repository Mirroring 명령을 사용합니다 .

svnsyncSubversion 원격 저장소 미러링 도구입니다. 간단히 말해, 한 저장소의 개정을 다른 저장소로 재생할 수 있습니다.

svnsync명령에 대한 Subversion 문서 에는 다음과 같은 경고 (버전 1.7 기준)가 있습니다. 이는 다른 SVN 명령을 사용하여 미러 저장소를 수정하면 svnsync해당 특정 미러에서 다시 사용해서는 안된다는 의미입니다.

svnsync미러링 작업의 일부로 만들어지지 않은 미러 저장소의 변경 사항에 매우 민감합니다. 이를 방지하려면 해당 svnsync프로세스가 미러 저장소를 수정할 수있는 유일한 프로세스 인 경우가 가장 좋습니다 .


Subversion 버전 1.7에는 svnrdump원격 저장소에 액세스하고 svnadmin dump명령에 의해 생성 된 것과 동일한 덤프 형식 출력을 생성하는 데 사용할 수 있는 새 명령 이 있습니다 . 이를 통해 svnrdumpwith 를 사용 svnadmin load하여 Subversion 저장소를 전송할 수 있습니다 .

새 명령에 대한 설명이있는 svnrdump— 원격 Subversion 저장소 데이터 마이그레이션참조하십시오 .

레드 북의 5 장에서 다른 곳에서 리포지토리 데이터 마이그레이션svnrdump 섹션 에는 다음을 언급하는 리포지토리 데이터 마이그레이션 하위 섹션이 있습니다 .

[ svnrdumpsvnadmin dump] 의 주요 차이점 은 저장소에 대한 직접 액세스를 요구하는 대신 svnrdumpSubversion 클라이언트와 동일한 RA (Repository Access) 프로토콜을 사용하여 원격으로 작동한다는 것입니다. 따라서 인증 자격 증명을 제공해야 할 수 있습니다. 또한 원격 상호 작용 [원문]은 Subversion 서버에 구성된 모든 권한 제한의 적용을받습니다.

또한 svnadmin dump후크와 같은 서버 구성 사용자 정의와 관련된 제한 사항 이 전송되지 않을 수 있다고 가정합니다 svnrdump.


를 사용하여 덤프 파일을 생성 한 다음를 사용하여 svnadmin dump새 저장소로 가져올 수 있습니다 svnadmin load.


나는 그것을 활용하여 생성 된 덤프 파일을 명시해야한다고 생각한다.

    svnadmin dump path/to/repos > dumpfile

명령을 사용하여 (svn 1.7 이상에서) 만들 수 있습니다.

   svnrdump dump url_to_repos > dumpfile

이것은 서버가 아닌 원격 컴퓨터에서 수행 할 때 유용합니다.


이것이 다른 사람들에게 도움이되는 경우 한 Subversion 저장소에서 다른 저장소로 변경 세트를 재생하는 svn2svn이 있습니다.

https://github.com/tonyduckles/svn2svn


한 서버에서 다른 버전으로 저장소를 마이그레이션하려면 다음 단계를 따라야합니다.

1 단계 : 모든 저장소 버전을 덤프 파일로 덤프합니다. 기존 저장소에 수천 개의 버전이있을 수 있습니다. 따라서 다음 스크립트를 사용하여 덤프 파일을 만들 수 있습니다.

dump.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin dump <old_server_repository_location > -r $i  –incremental > <dump_location>/$i.dump
done

위의 스크립트에서 공간 가용성에 따라 이전 저장소의 전체 덤프를 얻거나 짧은 간격 (예 : 0-5000에서 5001-10000 등)으로 덤프를 가져올 수 있습니다.

2 단계 : 아래 명령을 사용하여 위 스크립트를 실행합니다. 커널 버전에 따라 아래 두 가지 쿼리 중 하나를 실행해야합니다.

$ bash dump.sh > stdout.sh
$ ./sh dump.sh > stdout.sh

위의 명령을 사용하여 실행해야하는 모든 명령을 stdout.sh 파일에 기록합니다. 나중에 참조 할 수 있도록이 파일을 추적 할 수 있습니다.

3 단계 : 이전 서버와 새 서버 사이의 포트 번호 22에 대해 방화벽이 열려 있는지 확인합니다. 열려 있지 않으면 관리자에게 요청하여 사용할 수 있도록하십시오.

4 단계 : 이제 아래 명령을 사용하여 이전 SVN 저장소에서 생성 된 모든 덤프 파일을 새 서버에 복사합니다.

$ sftp xxxx@<new_server>
Connecting to <new_server>…
Password:
sftp> mput *.dump <new_server>/dump_location

위의 명령에서는 xxxx작업을 수행하는 사용자입니다. sftp를 수행하는 과정에서 이전 서버의 덤프 파일을 새 서버로 복사합니다.

5 단계 : 새 서버에 대한 새 리포지토리 만들기

$ svnadmin create <new_repository>

6 단계 : 이제 아래 스크립트를 사용하여 모든 덤프 파일을로드합니다.

load.sh

# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
   # your-unix-command-here
   echo $i
   svnadmin load –bypass-prop-validation <new_repository> < dump_location /$i.dump
done

위의 6 가지 간단한 단계를 따르면 기존 저장소를 새 저장소로 마이그레이션 할 수 있습니다. 이 프로세스를 통해 기존 저장소의 손상된 개정에 대해 걱정할 필요가 없습니다.

참고 URL : https://stackoverflow.com/questions/939963/how-do-i-migrate-an-svn-repository-to-another-svn-repository

반응형