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를 사용하여 내부적으로 저장소를 식별하며 작업 복사본을 다른 저장소로 전환 할 수 없습니다.
파일 시스템 액세스 권한이없는 경우 마이그레이션에 도움이되는 타사 옵션이있을 수 있습니다 (또는 작성할 수 있음). 기본적으로 새 저장소에서 각 개정판을 재생하려면 svn 로그를 사용해야합니다. 그런 다음 나중에 메타 데이터를 수정합니다. 이를 수행하려면 pre-revprop-change 및 post-revprop-change 후크 스크립트가 필요하며, 이는 일종의 파일 시스템 액세스를 가정하므로 YMMV입니다. 또는 기록을 유지하지 않으려면 작업 복사본을 사용하여 새 저장소로 가져올 수 있습니다. 그러나 바라건대 이것은 사실이 아닙니다.
rsvndump
svnrepository.com에서 내가 제어하는 Ubuntu 서버로 리포지토리를 마이그레이션하는 데 효과적이었습니다.
Ubuntu에서 rsvndump를 설치하고 사용하는 방법 :
누락 된 종속성 ( "APR"및 Subversion 라이브러리) 설치
sudo apt-get install apache2-threaded-dev sudo apt-get install libsvn-dev
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
원격 SVN 저장소를 로컬 파일로 덤프
rsvndump http://my.svnrepository.com/svn/old_repo > old_repo_dump
새 저장소를 만들고 로컬 덤프 파일에로드
sudo svnadmin create /opt/subversion/my_new_rep sudo svnadmin load --force-uuid /opt/subversion/my_new_repo < old_repo_dump
svnsync를 사용할 수도 있습니다. 소스 저장소에 대한 읽기 전용 액세스 만 필요합니다.
내 Blog-Note-to-myself 에서 발췌
이제 덤프 파일을 가져올 수 있습니다 (예 : 머신 / 서브 버전 간 마이그레이션하는 경우). 예를 들어 소스 저장소에서 덤프 파일을 생성하고 아래와 같이 새 저장소에로드 한 경우.
CmdShell> svnadmin dump D:\CoderZone2\svn-repos > ReposDump.dmp
CmdShell> svnadmin load D:\CoderZone\svn-repos < ReposDump.dmp
이를 수행하는 도구는
svnadmin dump
그러나 이것이 작동하려면 저장소에 대한 파일 시스템 액세스가 필요합니다. 그런 다음 (저장소가 FSFS 형식 인 경우) 저장소를 새 위치로 복사 할 수 있습니다 (BDB 형식 인 경우 덤프 /로드가 강력하게 권장 됨).
파일 시스템 액세스 권한이없는 경우 저장소 공급자에게 덤프를 제공하도록 요청해야합니다 (그리고 저장소를 삭제하도록 만들고 준수하기를 바랍니다).
저장소에 대한 파일 액세스 권한이없는 경우 덤프 파일을 만드는 데 rsvndump (원격 Subversion 저장소 덤프)를 선호 합니다.
기본적으로 작업을 수행하는 방법에는 여러 가지가 있습니다. 이 주제는 SVNBook | Migrating Repository Data Elsewhere , 그래서 책의 섹션을 읽는 것이 좋습니다.
다음은 옵션에 대한 간략한 설명입니다.
환경에 따라 다르지만 리포지토리를 새 서버에 복사하기 만하면 작동 할 가능성이 큽니다. 저장소를 복사 한 후 저장소 후크 스크립트를 수정하여 예상대로 작동하는지 확인해야합니다.
svnadmin dump
및svnadmin load
명령을 사용 하여 ehm, 전체 덤프를 생성 한 다음 다른 서버의 다른 저장소로로드 할 수 있습니다.svnadmin create
덤프를로드하려면 새 깨끗한 저장소 가 필요 합니다. 접근 방식은 저장소 히스토리 만 다루며 후크 스크립트 및 저장소 구성 파일을 이동하지 않습니다 . 또한 덤프하려면 원본 저장소에 대한 읽기 파일 시스템 액세스 권한이 있어야합니다.Subversion 1.7부터
svnrdump
도구를 사용할 수 있습니다. 일반적으로 모방svnadmin dump
하고svnadmin load
기능하지만 원격으로 작동합니다. 도구는 예를 들어 HTTPS 프로토콜을 통해 Subversion 클라이언트와 같이 원격으로 작동하므로 원본 및 대상 리포지토리에 대한 읽기 / 쓰기 파일 시스템 액세스 권한이 필요하지 않습니다. 따라서 원본 저장소에 대한 읽기 액세스 권한이 있어야하고 대상 저장소에 대한 읽기 / 쓰기 권한이 있어야합니다.또 다른 옵션은
svnadmin hotcopy
명령 을 사용하는 것 입니다. 이 명령은 주로 백업 목적으로 사용되며 구성 및 후크 스크립트를 포함하여 저장소의 전체 사본을 생성합니다. 그러면 핫 카피 된 저장소를 다른 서버로 이동할 수 있습니다.
다음 svnadmin hotcopy
명령을 사용할 수도 있습니다 .
svnadmin hotcopy OLD_REPOS_PATH NEW_REPOS_PATH
모든 후크, 구성 파일 등을 포함하여 저장소에서 전체 백업을 수행합니다.
Assuming you have the necessary privileges to run svnadmin, you need to use the dump and load commands.
I found an article about how to move svn repositories from a hosting service to another, and how to do local backups:
Define where you will store your repositories:
mkdir ~/repo MYREPO=/home/me/someplace ## you should use full path here
- Now create a empty svn repository with
svnadmin create $MYREPO
Create a hook file and make it executable:
echo '#!/bin/sh' > $MYREPO/hooks/pre-revprop-change chmod +x $MYREPO/hooks/pre-revprop-change
Now we can start importing the repository with
svnsync
, that will initialize a destination repository for synchronization from another repository:svnsync init file://$MYREPO http://your.svn.repo.here/
And the finishing touch to transfer all pending revisions to the destination from the source with which it was initialized:
svnsync sync file://$MYREPO
There now you have a local svn repository in the ~/repo
directory.
Source:
- http://kylecordes.com/2007/svnsync-svn-backup
- http://www.workhabit.com/blog/moving-svn-repository-hosted-service
You might find some help on migrating SVN repositories in Chapter 5. Repository Administration, Migrating a repository.
This approach requires access to svnadmin.
참고URL : https://stackoverflow.com/questions/49450/how-do-i-export-and-then-import-a-subversion-repository
'program story' 카테고리의 다른 글
두 개의 RMarkdown (.Rmd) 파일을 단일 출력으로 결합하는 방법은 무엇입니까? (0) | 2020.10.10 |
---|---|
UICollectionView, 전체 너비 셀, 자동 레이아웃 동적 높이 허용? (0) | 2020.10.10 |
C ++ 함수 매개 변수의 평가 순서 (0) | 2020.10.10 |
수은 병합을 중단하는 방법은 무엇입니까? (0) | 2020.10.10 |
groovy에서 작은 따옴표 또는 큰 따옴표 내의 문자열의 차이점은 무엇입니까? (0) | 2020.10.10 |