前提条件
これらの手順のようにするには、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 -E 's/^ *//' | sort | uniq > authors.txtsvn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed -E 's/^ *//' | 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 に移動してから、もう一度やり直してください。