前提条件
これらの手順のようにするには、macOS または Linux システムを使い、次のツールをインストールする必要があります。
- Subversion
- Git (
git-svn
を含む) - Git Large File Storage (Git LFS) (「Git Large File Storage をインストールする」を参照してください)
Subversion リポジトリをインポートする
-
GitHub に新しいリポジトリを作成します。 エラーが発生しないようにするには、新しいリポジトリの初期化に README、ライセンス、または gitignore ファイルを使わないでください。 これらのファイルは、プロジェクトを GitHubにプッシュした後で追加できます。 詳しくは、「新しいリポジトリの作成」を参照してください。1. お使いのコンピューターに Git がインストールされていることを確認するには、
git --version.
を実行します。出力は
git version 2.40.0
のようになります。 -
お使いのコンピューターで
git svn
を使用できることを確認するには、git svn --version
を実行します。出力が
git-svn version 2.40.0 (svn 1.14.2)
のようになる必要があります。git
は正常に実行できても、git svn
を実行するとエラーが発生する場合は、git svn
を個別にインストールすることが必要な場合があります。 Homebrew または Ubuntu パッケージ レジストリを使うことをお勧めします。これらにはgit-svn
パッケージが含まれます。 -
Git LFS がコンピューターにインストールされていることを確認するには、
git lfs --version
を実行します。出力は
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
のようになります。 -
Subversion リポジトリをチェックアウトします。
たとえば、Sourceforge から Logisim オープンソース プロジェクトをチェックアウトするには、
svn checkout https://svn.code.sf.net/p/circuit/code/trunk
を実行します。 -
Subversion リポジトリのディレクトリに移動します。
-
Subversion プロジェクトの作成者の一覧を取得して
authors.txt
にリストを格納するには、次のスクリプトを実行します。Shell svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
-
authors.txt
ファイルを更新し、Subversion リポジトリで使われている作成者の名前を、Git リポジトリで使用する名前に、次の形式でマッピングします。octocat = The Octocat <octocat@github.com>
-
Subversion リポジトリを Git リポジトリに変換するには、
git svn
を使います。-
お使いの Subversion リポジトリが "trunk"、"branchs"、"tags" フォルダーを含む標準形式の場合は、
git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT
を実行します。このとき、URL
は Subversion リポジトリの URL、PATH/TO/DESTINATION
はリポジトリのクローン先のディレクトリへのパス、PATH/TO/AUTHORS.TXT
はauthors.txt
ファイルへのパスに、それぞれ置き換えます。たとえば、Sourceforge から logisim というディレクトリに Logisim プロジェクトをクローンするには、
git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt
を実行します。 -
Subversion リポジトリが標準ではない場合は、お使いのリポジトリを処理するように
git svn
カスタマイズできます。 詳しくは、Git のドキュメントで git-push についての説明をご覧ください。
-
-
Git によって各 SVN リビジョンがチェックアウトされて、リビジョンが Git コミットに変換されます。 リポジトリに多数のファイルまたは多くの履歴がある場合、このプロセスには長い時間がかかります。
大きなリポジトリの場合、コマンドがフリーズする可能性があります。 その場合は、Ctrl + C キーを押してコマンドを終了し、新しいディレクトリに移動してから
git svn fetch
を実行することで、終了した場所から開始できます。 -
新しく作成された Git リポジトリのディレクトリに移動します。1. GitHub リポジトリをリモートとして追加するには、
URL
を先程作成した GitHub リポジトリの URL (例:https://github.com/octocat/example-repository.git
) で置き換えて、git remote add origin URL
を実行します。1. リポジトリを GitHub にプッシュするには、git push --mirror origin
を実行します。リポジトリに GitHub のファイル サイズ制限を超えるファイルが含まれている場合、プッシュが失敗する可能性があります。
git lfs import
を実行して、大きなファイルを Git LFS に移動してから、もう一度やり直してください。