Skip to main content

Subversion リポジトリをインポートする

リポジトリを Git に変換してから、Git リポジトリを GitHub にプッシュすることで、Subversion からリポジトリをインポートできます。

前提条件

これらの手順のようにするには、macOS または Linux システムを使い、次のツールをインストールする必要があります。

Subversion リポジトリをインポートする

  1. GitHub に新しいリポジトリを作成します。 エラーが発生しないようにするには、新しいリポジトリの初期化に README、ライセンス、または gitignore ファイルを使わないでください。 これらのファイルは、プロジェクトを GitHubにプッシュした後で追加できます。 詳しくは、「新しいリポジトリの作成」を参照してください。1. お使いのコンピューターに Git がインストールされていることを確認するには、git --version. を実行します。

    出力は git version 2.40.0 のようになります。

  2. お使いのコンピューターで git svn を使用できることを確認するには、git svn --version を実行します。

    出力が git-svn version 2.40.0 (svn 1.14.2) のようになる必要があります。

    git は正常に実行できても、git svn を実行するとエラーが発生する場合は、git svn を個別にインストールすることが必要な場合があります。 Homebrew または Ubuntu パッケージ レジストリを使うことをお勧めします。これらには git-svn パッケージが含まれます。

  3. Git LFS がコンピューターにインストールされていることを確認するには、git lfs --version を実行します。

    出力は git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1) のようになります。

  4. Subversion リポジトリをチェックアウトします。

    たとえば、Sourceforge から Logisim オープンソース プロジェクトをチェックアウトするには、svn checkout https://svn.code.sf.net/p/circuit/code/trunk を実行します。

  5. Subversion リポジトリのディレクトリに移動します。

  6. Subversion プロジェクトの作成者の一覧を取得して authors.txt にリストを格納するには、次のスクリプトを実行します。

    Shell
    svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
    
  7. authors.txt ファイルを更新し、Subversion リポジトリで使われている作成者の名前を、Git リポジトリで使用する名前に、次の形式でマッピングします。

    octocat = The Octocat <octocat@github.com>
    
  8. 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.TXTauthors.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 についての説明をご覧ください。

  9. Git によって各 SVN リビジョンがチェックアウトされて、リビジョンが Git コミットに変換されます。 リポジトリに多数のファイルまたは多くの履歴がある場合、このプロセスには長い時間がかかります。

    大きなリポジトリの場合、コマンドがフリーズする可能性があります。 その場合は、Ctrl + C キーを押してコマンドを終了し、新しいディレクトリに移動してから git svn fetch を実行することで、終了した場所から開始できます。

  10. 新しく作成された 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 に移動してから、もう一度やり直してください。

参考資料