마이그레이션 준비

준비

SVN에서 Git 기반 버전으로 마이그레이션하는 프로젝트의 첫 단계는 마이그레이션 책임자의 로컬 컴퓨터를 준비하는 것입니다. 이 단계에서는, 편리한 유틸리티 스크립트를 다운로드하여 필요 시 대소문자 구분이 되는 파일시스템에 설치한 후 작성자 정보를 SVN에서 Git으로 매핑합니다.

다음 모든 단계는 모두 마이그레이션 책임자의 로컬 컴퓨터에서 진행해야 합니다.

마이그레이션 스크립트 다운로드

Git에는 SVN 리포지토리를 가져오는 데 필요한 도구가 대부분 들어 있지만 일부 기능이 없을 수도 있습니다. Atlassian은 이러한 기능을 편리한 JAR 파일에 넣어 두었습니다. 이 파일은 마이그레이션에 꼭 필요하므로 svn-migration-scripts.jar이 가이드에서는 이 파일을 사용자의 홈 디렉터리에 저장했다고 가정합니다. 참고로 설명하자면 svn 마이그레이션에는 대소문자를 구분하는 파일 시스템이 필요하며 이는 NTFS에서는 작동하지 않습니다. Linux 컴퓨터에서 사용하는 것이 좋습니다.

다운을 받았다면 스크립트를 보고 Java Runtime Environment와, Git, Subversion, git-svn 유틸리티가 설치되었는지 확인하는 것이 좋습니다. 명령 프롬프트를 열고 다음 명령을 실행합니다.

java -jar ~/svn-migration-scripts.jar verify

이때 마이그레이션 절차에 필요한 프로그램이 없으면 콘솔에 에러 메시지가 나타날 수도 있습니다. 시작 하기 전에 빠진 소프트웨어가 없는지 확인해 주십시오.

버전을 확인할 수 없다는 경고 메시지가 표시되면 export LANG=C(*nix) 또는 SET LANG=C(Windows)를 실행하고 다시 시도하세요.

OS X가 실행 중인 컴퓨터에서 마이그레이션을 진행 중이라면 다음 경고가 표시됩니다.

You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.

이 내용은 다음 섹션에서 설명합니다.

대소문자를 구분하는 디스크 이미지 마운트

Git 마이그레이션은 리포지토리의 손상을 막기 위해 대소문자를 구분하는 파일 시스템에서 실시해야 합니다. OS X 컴퓨터에서 마이그레이션을 실시하는 경우 이는 문제가 될 수 있습니다. OS X 파일시스템은 대소문자를 구분하지 않기 때문입니다.

OS X를 구동 중이 아니라면 로컬 컴퓨터에서 ~/GitMigration라는 디렉토리를 만들어야 합니다. 이 디렉토리에서 변환을 수행합니다. 그 후에는 다음 세션으로 건너 뛰어도 됩니다.

Git 마이그레이션: 디스크 이미지 마운트

OS X를 실행 중이라면 svn-migration-scripts.jar에 포함된 create-disk-image 스크립트로 대소문자를 구분하는 디스크 이미지를 마운트해야 합니다. 여기에는 다음과 같은 두 가지 파라미터가 필요합니다.

  1. 생성할 디스크 이미지이 크기(기가바이트 단위) 사이즈는 얼마가 되든 상관 없습니다. 단 마이그레이션하려는 SVN 리포지토리보다는 커야 합니다.
  2. 디스크 이미지의 이름. 본 가이드에서는 이 값에 GitMigration이라는 이름을 사용합니다.

예컨대, 다음 명령어는 GitMigration이라는 5GB 디스크 이미지를 만듭니다.

java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration

이 디스크 이미지는 홈 디렉토리에 마운트됩니다. ~/GitMigration이라고 하는 디렉토리가 로컬 컴퓨터에 나타날 것입니다. 이 디렉토리는 대소문자를 구분하는 가상의 파일 시스템이 되며 여기에 변환된 Git 리포지토리가 저장됩니다.

작성자 정보 추출

SVN은 리비전별로 작성자의 사용자 이름만 기록합니다. 반면 Git은 작성자의 전체 이름과 이메일 주소까지 저장합니다. 즉, SVN 사용자 이름을 Git 사용자 이름과 매핑하는 텍스트 파일을 만들어야 합니다.

Git 마이그레이션: SVN 사용자 이름과 Git 사용자 이름 매핑

다음 명령어를 실행하여 이 텍스트 파일을 자동으로 생성합니다.

cd ~/GitMigration 
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt

<svn_repo_uri>는 마이그레이션하려는 SVN 리포지토리의 URI로 바꿔야 합니다. 예를 들어, 리포지토리가 https://svn.example.com에 위치해 있다면 다음을 명령을 실행해야 합니다.

java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt

그러면 authors.txt라는 텍스트 파일이 생성됩니다. 이 파일에는 SVN 리포지토리에 들어 있는 모든 작성자의 사용자 이름이 생성된 이름 및 주소와 함께 들어 있습니다. 이 파일의 모양은 다음과 같아야 합니다.

j.doe = j.doe <j.doe@mycompany.com> 
m.smith = m.smith <m.smith@mycompany.com>

등호 오른쪽을 해당 사용자의 이름과 이메일 주소로 바꿉니다. 예를 들면, 위 작성자는 다음과 같이 바꿀 수 있습니다.

j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>

요약

이제 마이그레이션 스크립트와 디스크 이미지(OS X만 해당), 작성자 정보를 확보했으므로 SVN 이력을 새 Git 리포지토리로 가져올 준비가 되었습니다. 다음 단계에서는 이 변환이 어떻게 일어나는지 설명합니다.

Git을 배울 준비가 되었습니까?

이 대화형 자습서를 사용해 보세요.

지금 시작하기