前提条件
これらの手順のようにするには、macOS または Linux システムを使い、次のツールをインストールする必要があります。
- Mercurial
- Git
- Git Large File Storage (Git LFS) (「Git Large File Storage をインストールする」を参照してください)
pipパッケージ マネージャーを含む Python
Mercurial リポジトリをインポートする
-
GitHub に新しいリポジトリを作成します。 エラーが発生しないようにするには、新しいリポジトリの初期化に README、ライセンス、または gitignore ファイルを使わないでください。 これらのファイルは、プロジェクトが GitHub にプッシュされた後に追加できます。 詳しくは、「新しいリポジトリの作成」をご覧ください。
-
お使いのコンピューターに Mercurial がインストールされていることを確認するには、
hg --versionを実行します。出力が
Mercurial Distributed SCM (version 6.4)のようになる必要があります。 -
お使いのコンピューターに 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)のようになります。 -
お使いのコンピューターに
pipがインストールされていることを確認するには、pip --versionを実行します。出力が
pip 21.2.4のようになる必要があります。 -
mercurialPython パッケージをインストールするには、pip install mercurialを実行します。 -
fast-export の最新リリースをコンピューターにダウンロードしてから、アーカイブを抽出します。
-
抽出したディレクトリに移動して、
./hg-fast-export.sh --helpを実行します。出力が
usage: hg-fast-export.shで始まっている必要があります。 -
Mercurial リポジトリをクローンします。
たとえば、Mercurial 自体のソース コードを
mercurial-repoディレクトリにクローンするには、hg clone https://www.mercurial-scm.org/repo/hg mercurial-repoを実行します。 -
新しいディレクトリを作成し、新しいディレクトリに移動してから、新しい Git リポジトリを初期化します。
たとえば、新しいリポジトリの名前を
mercurial-gitにする場合は、mkdir mercurial-git && cd mercurial-git && git initを実行します。 -
新しく作成された Git リポジトリのディレクトリに移動します。
-
Mercurial と同じ方法でファイル名の大文字と小文字を処理するように新しい Git リポジトリを構成するには、
git config core.ignoreCase falseを実行します。 -
Mercurial プロジェクトのコミッターの一覧を取得して
committers.txtにリストを格納するには、次のスクリプトを実行します。Shell hg log --template "{author}\n" | sort | uniq > committers.txthg log --template "{author}\n" | sort | uniq > committers.txt -
committers.txtファイルを更新し、Mercurial リポジトリで使われているコミッター名を、Git リポジトリで使用する名前に、次の形式でマッピングします。“The Octocat <[email protected]>”=”Octocat <[email protected]>” -
初期化された 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のようにします。 -
インポートが完了した後、新しく作成された Git リポジトリを確認するには、
git checkout HEADを実行します。 -
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 に移動してから、もう一度やり直してください。