SVN 미러링 · 1 min read · Feb 13, 2026
SVK로 SVN 저장소의 읽기 전용 미러 만들기
SVK로 SVN 저장소의 읽기 전용 미러 만들기
당신의 오픈소스 프로젝트를 위한 SVN이 있고, 이를 오픈소스 프로젝트를 호스팅하는 원격 위치(예: SourceForge.net 또는 dev.java.net)로 미러링하고 싶다고 가정해 보겠습니다. 계정 및 프로젝트 등록 단계는 생략하고, 이미 자격 증명과 SVN 저장소 URL을 가지고 있다고 가정하겠습니다. 또한 Debian 또는 Ubuntu를 사용하고 있으며, Apache httpd에서 SVN이 실행 중이라고 가정합니다.
SVN 1.4에 기본적으로 포함된 svnsync라는 도구가 있는데, 이는 정확히 같은 목적을 위해 설계되었지만, 이 경우 사용을 방해하는 한 가지가 있습니다. 그것은 대상 저장소에 사용자 정의 svn 훅이 필요하며, 우리의 경우에는 이를 사용자 정의하는 것이 불가능합니다.
먼저 SVK를 설치합니다:
# aptitude install svk대략적으로 말하자면, SVK는 SVN의 상위 집합으로, 저장소 동기화와 같은 몇 가지 고급 트릭을 허용합니다. SVK에 대한 심층 가이드로 참조할 수 있는 Version Control with SVK라는 책이 있습니다. 간단히 설명하겠습니다. 개념은 모든 관련 SVN 저장소(주 저장소 및 정보를 덤프할 저장소)의 복사본을 포함하는 SVK 저장소(“depot”)를 생성한 다음 이러한 복사본을 동기화하는 것입니다.
커밋이 이루어질 때마다 저장소가 동기화되기를 원하므로 SVN 훅 절차가 활용되며, 우리의 경우 이는 apache httpd 사용자 아래에서 발생합니다.
따라서 간단하게 만들기 위해 해당 계정으로 로그인하고 필요한 루틴을 수행합시다.
# su www-data이제 우리가 해야 할 일은 기본 depot을 초기화하는 것입니다.
$ svk depotmap저장소를 저장할 위치를 지정하기 위해 경로를 편집합니다. 저는 /var/opt/svk/local을 선택하겠습니다.
이제 최소한 2개의 미러를 생성할 수 있습니다: 하나는 로컬 저장소용, 다른 하나는 원격 저장소용(여러 개의 미러를 가질 수 있는 것은 아무것도 방해하지 않습니다):
$ svk mirror //local file:///var/opt/svn이렇게 해서 저장소 위치(이름은 “local”)를 SVN 저장소가 위치한 파일 시스템 위치에 직접 매핑했습니다.
$ svk mirror //remote https://myproject.svn.sourceforge.net/svnroot/myproject원격 저장소에 대해서도 마찬가지입니다. 이 경우 SourceForge.net에 호스팅됩니다. 인증서를 영구적으로 수락하고 사용자 이름과 비밀번호를 제공하여 캐시해야 합니다.
원격 저장소는 읽기 전용이므로, 우리는 한 번만 동기화할 것입니다.
$ svk sync //remote그런 다음 나중에 post-commit 스크립트에 의해 수행될 작업을 수행합니다.
$ svk sync //local
$ svk smerge --baseless --incremental --verbatim //local //remote후자의 명령은 모든 커밋 세부 정보를 보존하면서 로컬 저장소를 원격 저장소와 동기화합니다. 이를 로컬 저장소에 커밋이 완료된 후 자동으로 수행되도록 하려면, 로컬 SVN 저장소의 hooks 디렉토리에 post-commit이라는 이름의 파일을 만들고 그 안에 이러한 명령을 넣습니다. 다음과 같이 실행 가능하게 만듭니다:
$ chmod +x ./post-commit #''hooks'' 디렉토리에 있다고 가정그게 전부입니다. 확인해 보세요.
<이 튜토리얼은 다음에 의해 작성되었습니다>
Alex Yanchenko, www.centricware.org
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.