Prepare to migrate


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.

Once you’ve downloaded it, it’s a good idea to verify the scripts to make sure you have the Java Runtime Environment, Git, Subversion, and the git-svn utility installed. Open a command prompt and run the following:

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


If you get a warning about being unable to determine a version, run export LANG=C (*nix) or SET LANG=C (Windows) and try again.

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 上で行う場合は問題が生じます。

If you’re not running OS X, all you need to do is create a directory on your local machine called ~/GitMigration. This is where you will perform the conversion. After that, you can skip to the next section.

Git への移行: ディスクイメージのマウント

If you are running OS X, you need to mount a case-sensitive disk image with the create-disk-image script included in svn-migration-scripts.jar. It takes two parameters:

  1. 作成するディスクイメージのサイズ (単位はギガバイト)。このサイズは、移行対象の SVN リポジトリよりも大きいサイズである限り任意の値を指定することができます。
  2. The name of the disk image. This guide uses GitMigration for this value.

For example, the following command creates a 5GB disk image called GitMigration:

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

The disk image is mounted in your home directory, so you should now see a directory called ~/GitMigration on your local machine. This serves as a virtual case-sensitive filesystem, and it’s where you’ll store the converted Git repository.


SVN では、各々のコミットにおいて記録されるオーサー情報はユーザー名のみです。一方 Git では、オーサーのフルネームと E メールアドレスを記録します。従って、SVN ユーザー名を Git においてそれに対応する情報にマップするテキストファイルを作成する必要があります。

Git への移行: SVN ユーザー名を Git ユーザー名にマップする。


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

Be sure to replace <svn-repo> with the URI of the SVN repository that you want to migrate. For example, if your repository resided at, you would run the following:

java -jar ~/svn-migration-scripts.jar authors > authors.txt

This creates a text file called authors.txt that contains the username of every author in the SVN repository along with a generated name and email address. It should look something like this:

j.doe = j.doe <>
m.smith = m.smith <>


j.doe = John Doe <>
m.smith = Mary Smith <>


これでマイグレーションスクリプト、ディスクイメージ (OS X のみ)、オーサー情報が揃い、SVN履歴を新たな Git リポジトリにインポートする準備ができました。次のステップでは、この変換機能について説明します。

Git を学習する準備はできていますか?