[svn] Subversion 저장소를 내보내고 가져 오는 방법은 무엇입니까?

나는 상업용 SVN 공급자를 사용하여 소스 코드를 저장하는 프로젝트를 막 마무리했습니다. 고객이 궁극적으로 선택한 웹 호스트에는 호스팅 패키지의 일부로 리포지토리가 포함되어 있으므로 프로젝트가 종료되었으므로 리포지토리를 웹 호스트로 재배치하고 상용 계정을 중단하고 싶습니다.

이 일을 어떻게할까요?



답변

저장소를 이동하고 기록을 유지하려면 두 호스트 모두에서 파일 시스템 액세스가 필요합니다. 백엔드가 FSFS (최신 버전의 기본값) 인 경우 가장 간단한 해결책은 전체 저장소 폴더의 파일 시스템 복사본을 만드는 것입니다.

Berkley DB 백엔드가 있고 백엔드가 무엇인지 확실하지 않거나 SVN 버전 번호를 변경하는 경우 svnadmin을 사용하여 이전 저장소를 덤프하고 새 저장소에로드 할 수 있습니다. 저장소. 를 사용 svnadmin dump하면 새 시스템에 복사 할 수있는 단일 파일 백업이 제공됩니다. 그런 다음 새 (빈) 저장소를 만들고를 사용할 수 있습니다. 그러면 svnadmin load기본적으로 메타 데이터 (작성자, 타임 스탬프 등)와 함께 모든 커밋이 재생됩니다.

덤프 /로드 프로세스에 대한 자세한 내용은 여기에서 읽을 수 있습니다.

http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate

또한 svnadmin load을 사용하는 경우 --force-uuid옵션 을 사용하는지 확인하십시오. 그렇지 않으면 사람들이 새 저장소로 전환하는 데 문제가있을 것입니다. Subversion은 UUID를 사용하여 내부적으로 저장소를 식별하며 작업 복사본을 다른 저장소로 전환 할 수 없습니다.

파일 시스템 액세스 권한이없는 경우 마이그레이션에 도움이되는 타사 옵션이있을 수 있습니다 (또는 작성할 수 있음). 그런 다음 나중에 메타 데이터를 수정합니다. 이를 수행하려면 pre-revprop-change 및 post-revprop-change 후크 스크립트가 필요하며, 이는 일종의 파일 시스템 액세스를 가정하므로 YMMV입니다. 또는 기록을 유지하지 않으려면 작업 복사본을 사용하여 새 저장소로 가져올 수 있습니다. 그러나 바라건대 이것은 사실이 아닙니다.


답변

rsvndump svnrepository.com에서 내가 제어하는 ​​Ubuntu 서버로 리포지토리를 마이그레이션하는 데 효과적이었습니다.

Ubuntu에서 rsvndump를 설치하고 사용하는 방법 :

  1. 누락 된 종속성 ( “APR”및 Subversion 라이브러리) 설치

    sudo apt-get install apache2-threaded-dev
    sudo apt-get install libsvn-dev
    
  2. rsvndump 설치

    wget http://prdownloads.sourceforge.net/rsvndump/rsvndump-0.5.5.tar.gz
    tar xvfz rsvndump-0.5.5.tar.gz
    cd rsvndump-0.5.5
    ./configure
    make
    sudo make install
    
  3. 원격 SVN 저장소를 로컬 파일로 덤프

    rsvndump http://my.svnrepository.com/svn/old_repo > old_repo_dump
    
  4. 새 저장소를 만들고 로컬 덤프 파일에로드

    sudo svnadmin create /opt/subversion/my_new_rep
    sudo svnadmin load --force-uuid /opt/subversion/my_new_repo < old_repo_dump
    


답변

svnsync를 사용할 수도 있습니다. 소스 저장소에 대한 읽기 전용 액세스 만 필요합니다.

svnbook에서 더


답변

블로그 노트 에서 발췌 :

이제 덤프 파일을 가져올 수 있습니다. 예를 들어 머신 / 서브 버전간에 마이그레이션하는 경우. 예를 들어 소스 저장소에서 덤프 파일을 생성하고 아래와 같이 새 저장소에로드 한 경우.

Unix 계열 시스템 용 명령 (터미널에서) :

svnadmin dump /path/to/your/old/repo > backup.dump
svnadmin load /path/to/your/new/repo < backup.dump.dmp

Microsoft Windows 시스템 용 명령 (cmd 쉘에서) :

svnadmin dump C:\path\to\your\old\repo > backup.dump
svnadmin load C:\path\to\your\old\repo < backup.dump


답변

이를 수행하는 도구는

svnadmin dump

그러나 이것이 작동하려면 저장소에 대한 파일 시스템 액세스가 필요합니다. 그런 다음 (저장소가 FSFS 형식 인 경우) 저장소를 새 위치로 복사 할 수 있습니다 (BDB 형식 인 경우 덤프 /로드가 강력하게 권장 됨).

파일 시스템 액세스 권한이없는 경우 저장소 공급자에게 덤프를 제공하도록 요청해야합니다 (그리고 저장소를 삭제하도록 만들고 준수하기를 바랍니다).


답변

저장소에 대한 파일 액세스 권한이없는 경우 덤프 파일을 만드는 데 rsvndump (원격 Subversion 저장소 덤프)를 선호 합니다.


답변

기본적으로 작업을 수행하는 방법에는 여러 가지가 있습니다. 이 주제는 SVNBook | Migrating Repository Data Elsewhere , 그래서 책의 섹션을 읽는 것이 좋습니다.

다음은 옵션에 대한 간략한 설명입니다.

  • 환경에 따라 다르지만 저장소를 새 서버에 복사하기 만하면 작동 할 가능성이 큽니다. 저장소를 복사 한 후 저장소 후크 스크립트를 수정하여 예상대로 작동하는지 확인해야합니다.

  • svnadmin dumpsvnadmin load명령을 사용 하여 ehm, 전체 덤프를 생성 한 다음 다른 서버의 다른 저장소로로드 할 수 있습니다. svnadmin create덤프를로드하려면 새 깨끗한 저장소 가 필요 합니다. 접근 방식은 저장소 히스토리 만 다루며 후크 스크립트 및 저장소 구성 파일을 이동하지 않습니다 . 또한 덤프하려면 원본 저장소에 대한 읽기 파일 시스템 액세스 권한이 있어야합니다.

  • Subversion 1.7부터 svnrdump도구를 사용할 수 있습니다. 일반적으로 모방 svnadmin dump하고 svnadmin load기능하지만 원격으로 작동합니다. 도구는 예를 들어 HTTPS 프로토콜을 통해 Subversion 클라이언트와 같이 원격으로 작동하므로 원본 및 대상 리포지토리에 대한 읽기 / 쓰기 파일 시스템 액세스 권한이 필요하지 않습니다. 따라서 원본 저장소에 대한 읽기 액세스 권한과 대상 저장소에 대한 읽기 / 쓰기 권한이 있어야합니다.

  • 또 다른 옵션은 svnadmin hotcopy명령 을 사용하는 것 입니다. 이 명령은 주로 백업 목적으로 사용되며 구성 및 후크 스크립트를 포함하여 저장소의 전체 복사본을 만듭니다. 그러면 핫 카피 된 저장소를 다른 서버로 이동할 수 있습니다.