Skip to main content

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

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

前提条件

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

  •         [Mercurial](https://www.mercurial-scm.org)
    
  •         [Git](https://git-scm.com/downloads)
    
  • Git Large File Storage (Git LFS) (「Git Large File Storage をインストールする」を参照してください)
  •         [Python](https://www.python.org) 、パッケージ マネージャーを含む `pip`
    

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

  1. GitHub に新しいリポジトリを作成します。 エラーが発生しないようにするには、新しいリポジトリの初期化に README、ライセンス、または gitignore ファイルを使わないでください。 これらのファイルは、プロジェクトが GitHub にプッシュされた後に追加できます。 詳しくは、「新しいリポジトリの作成」をご覧ください。

  2. お使いのコンピューターに Mercurial がインストールされていることを確認するには、hg --version を実行します。

    出力が Mercurial Distributed SCM (version 6.4) のようになる必要があります。

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

    出力は git version 2.40.0 のようになります。1. Git LFS がコンピューターにインストールされていることを確認するには、git lfs --version を実行します。

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

  4. お使いのコンピューターに pip がインストールされていることを確認するには、pip --version を実行します。

    出力が pip 21.2.4 のようになる必要があります。

  5.        `mercurial` Python パッケージをインストールするには、`pip install mercurial` を実行します。
    
  6.        [fast-export](https://github.com/frej/fast-export/releases) の最新リリースをコンピューターにダウンロードしてから、アーカイブを抽出します。
    
  7. 抽出したディレクトリに移動して、./hg-fast-export.sh --help を実行します。

    出力が usage: hg-fast-export.sh で始まっている必要があります。

  8. Mercurial リポジトリをクローンします。

    たとえば、Mercurial 自体のソース コードを mercurial-repo ディレクトリにクローンするには、hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo を実行します。

  9. 新しいディレクトリを作成し、新しいディレクトリに移動してから、新しい Git リポジトリを初期化します。

    たとえば、新しいリポジトリの名前を mercurial-git にする場合は、mkdir mercurial-git && cd mercurial-git && git init を実行します。

  10. 新しく作成された Git リポジトリのディレクトリに移動します。

  11. Mercurial と同じ方法でファイル名の大文字と小文字を処理するように新しい Git リポジトリを構成するには、git config core.ignoreCase false を実行します。

  12. Mercurial プロジェクトのコミッターの一覧を取得して committers.txt にリストを格納するには、次のスクリプトを実行します。

    Shell
    hg log --template "{author}\n" | sort | uniq > committers.txt
    
  13.        `committers.txt` ファイルを更新し、Mercurial リポジトリで使われているコミッター名を、Git リポジトリで使用する名前に、次の形式でマッピングします。
    
    “The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
    
  14. 初期化された Git リポジトリで hg-fast-export.sh を実行し、Mercurial リポジトリへのパスと committers.txt ファイルへのパスを引数として渡します。

    たとえば、../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main のようにします。

  15. インポートが完了した後、新しく作成された Git リポジトリを確認するには、git checkout HEAD を実行します。

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

参考資料

  •         [AUTOTITLE](/get-started/using-git/troubleshooting-the-2-gb-push-limit)