준비
SVN에서 Git 기반 버전으로 마이그레이션하는 프로젝트의 첫 단계는 마이그레이션 책임자의 로컬 컴퓨터를 준비하는 것입니다. 이 단계에서는, 편리한 유틸리티 스크립트를 다운로드하여 필요 시 대소문자 구분이 되는 파일시스템에 설치한 후 작성자 정보를 SVN에서 Git으로 매핑합니다.
다음 모든 단계는 모두 마이그레이션 책임자의 로컬 컴퓨터에서 진행해야 합니다.
마이그레이션 스크립트 다운로드
Git comes with most of the necessary tools for importing an SVN repository; however, there are a few missing bits of functionality that Atlassian has rolled into a handy JAR file. This file will be integral to the migration, so be sure to download svn-migration-scripts.jar
from Atlassian’s Bitbucket account. This guide assumes that you’ve saved it in your home directory. Disclaimer: for the svn migration you need a case-sensitive filesystem and this does not work on NTFS. We suggest using this on a Linux machine.
다운을 받았다면 스크립트를 보고 Java Runtime Environment와, Git, Subversion, git-svn 유틸리티가 설치되었는지 확인하는 것이 좋습니다. 명령 프롬프트를 열고 다음 명령을 실행합니다.
java -jar ~/svn-migration-scripts.jar verify
이때 마이그레이션 절차에 필요한 프로그램이 없으면 콘솔에 에러 메시지가 나타날 수도 있습니다. 시작 하기 전에 빠진 소프트웨어가 없는지 확인해 주십시오.
관련 자료
전체 Git 리포지토리를 이동하는 방법
솔루션 보기
Bitbucket Cloud에서 Git에 대해 알아보기
버전을 확인할 수 없다는 경고 메시지가 표시되면 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라는 디렉토리를 만들어야 합니다
. 이 디렉토리에서 변환을 수행합니다. 그 후에는 다음 세션으로 건너 뛰어도 됩니다.
OS X를 실행 중이라면 svn-migration-scripts.jar에 포함된
create-disk-image 스크립트로 대소문자를 구분하는 디스크 이미지를 마운트해야 합니다
. 여기에는 다음과 같은 두 가지 파라미터가 필요합니다.
1. 생성할 디스크 이미지이 크기(기가바이트 단위) 사이즈는 얼마가 되든 상관 없습니다. 단 마이그레이션하려는 SVN 리포지토리보다는 커야 합니다.
2. The name of the disk image. This guide uses GitMigration
for this value.
예컨대, 다음 명령어는 GitMigration이라는 5GB 디스크 이미지를 만듭니다
.
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
이 디스크 이미지는 홈 디렉토리에 마운트됩니다. ~/GitMigration이라고 하는
디렉토리가 로컬 컴퓨터에 나타날 것입니다. 이 디렉토리는 대소문자를 구분하는 가상의 파일 시스템이 되며 여기에 변환된 Git 리포지토리가 저장됩니다.
작성자 정보 추출
SVN은 리비전별로 작성자의 사용자 이름만 기록합니다. 반면 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 리포지토리로 가져올 준비가 되었습니다. 다음 단계에서는 이 변환이 어떻게 일어나는지 설명합니다.
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.