서브버전 저장소를 내보내고 가져오는 방법: 종합 가이드

소프트웨어 프로젝트 작업 시 명확하고 효율적인 소스 코드 관리 시스템을 유지하는 것이 중요합니다. 서브버전(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 dumpsvnadmin 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 명령을 사용하는 방법을 통해 이제 자신 있게 저장소 마이그레이션을 처리할 수 있는 지식을 갖추게 되었습니다.

적절한 백엔드 확인과 필요한 명령줄 도구 사용을 통해, 귀하의 소중한 프로젝트 데이터를 역사나 무결성을 잃지 않고 전송할 수 있습니다. 추가 질문이 있거나 추가 지원이 필요하다면, 주저하지 말고 커뮤니티나 관련 포럼에 문의하십시오. 행복한 코딩 되세요!