前提条件
これらの手順のようにするには、macOS または Linux システムを使い、次のツールをインストールする必要があります。
-
[Subversion](https://subversion.apache.org) -
[Git](https://git-scm.com/downloads) (`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を実行することで、終了した場所から開始できます。
参考資料
-
[AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)