서브버전 저장소를 내보내고 가져오는 방법: 종합 가이드
소프트웨어 프로젝트 작업 시 명확하고 효율적인 소스 코드 관리 시스템을 유지하는 것이 중요합니다. 서브버전(SVN)을 사용하는 개발자라면, 저장소를 이전해야 할 때가 올 수 있습니다. 예를 들어, 프로젝트 완료 후 상업적인 SVN 계정을 종료할 때입니다. 역사와 데이터의 무결성을 유지하면서 서브버전 저장소를 어떻게 내보내고 가져올까요? 이 블로그 게시물에서는 이 일반적인 문제를 다루고 이 작업을 원활하게 수행하기 위한 단계별 가이드를 제공하겠습니다.
SVN 저장소 마이그레이션의 기본 이해
실제 프로세스를 시작하기 전에, SVN과 관련된 몇 가지 필수 개념을 명확히 합시다:
- 저장소(Repository): 코드베이스를 저장하는 구조로, 프로젝트의 모든 버전 및 역사 정보를 포함합니다.
- 파일 시스템 접근(Filesystem Access): 저장소가 호스팅되는 서버에서 파일을 직접 읽고 쓸 수 있는 능력입니다.
- SVN의 백엔드(Backends in SVN): 서브버전은 다양한 백엔드 저장 방법을 사용할 수 있으며, 가장 일반적인 것은 FSFS와 Berkeley DB입니다.
많은 상황에서, 원활한 이전을 위해 현재와 새로운 호스팅 모두에 대해 파일 시스템 접근이 필요할 수 있습니다.
저장소 이동: 과정 설명
1. 백엔드 확인
첫째, 현재 저장소에서 사용하는 백엔드를 확인하십시오. 명령어나 서버 설정을 확인하여 저장소가 FSFS(최근 버전의 기본)인지 Berkeley DB인지 확인할 수 있습니다.
2. FSFS의 경우 파일 시스템 복사 사용
만약 FSFS를 사용하고 있다면, 저장소를 마이그레이션하는 가장 간단한 방법은:
- 파일 시스템 복사: 저장소를 포함한 전체 디렉토리를 새로운 호스트로 직접 복사합니다. 이 과정에서 모든 역사와 데이터가 포함됩니다.
3. Berkeley DB의 경우 svnadmin dump
및 svnadmin load
사용
Berkeley DB를 다루고 있거나 백엔드에 대해 확신이 없는 경우, 다음 단계를 따릅니다:
-
구 저장소 덤프하기:
svnadmin dump /path/to/old/repository > repository_dump.svn
이 명령은 모든 수정 사항과 역사를 캡처하는 단일 파일을 생성하며, 이 파일을 새 서버로 전송합니다.
-
새로운 빈 저장소 생성:
svnadmin create /path/to/new/repository
-
덤프를 새로운 저장소로 로드하기:
svnadmin load --force-uuid /path/to/new/repository < repository_dump.svn
--force-uuid
옵션을 사용하면 저장소의 고유 식별자(UUID)가 새 위치에서 사용할 수 있도록 호환되도록 보장되어, 사용자가 작업 사본을 문제 없이 전환할 수 있게 됩니다.
4. 파일 시스템 접근이 불가능한 경우 처리
파일 시스템 접근이 허용되지 않는 경우, 타사 도구나 스크립트와 같은 대안 솔루션이 존재할 수 있습니다. 이 과정은 일반적으로 다음을 포함합니다:
- 각 수정 재생:
svn log
를 사용하여 새 저장소에서 커밋을 재현합니다. - 메타데이터 수정: 데이터 무결성을 유지하기 위해 pre-revprop-change 및 post-revprop-change 후크 스크립트를 적절하게 설정합니다.
역사를 유지하는 것이 우선 사항이 아닌 경우, 작업 복사에서 새로운 저장소로 가져오기라는 더 간단한 옵션이 있습니다. 그러나 이 경우 역사적인 수정 사항이 삭제되므로, 대부분의 상황에서는 바람직하지 않을 수 있습니다.
결론
서브버전 저장소를 내보내고 가져오는 것은 처음에는 다소 daunting할 수 있지만, 이러한 명확하게 정리된 단계를 따르면 역사 보존과 함께 저장소를 성공적으로 이동할 수 있습니다. FSFS의 경우 파일 시스템 복사 기술을 사용하거나 Berkeley DB의 경우 svnadmin dump/load
명령을 사용하는 방법을 통해 이제 자신 있게 저장소 마이그레이션을 처리할 수 있는 지식을 갖추게 되었습니다.
적절한 백엔드 확인과 필요한 명령줄 도구 사용을 통해, 귀하의 소중한 프로젝트 데이터를 역사나 무결성을 잃지 않고 전송할 수 있습니다. 추가 질문이 있거나 추가 지원이 필요하다면, 주저하지 말고 커뮤니티나 관련 포럼에 문의하십시오. 행복한 코딩 되세요!