前提条件
これらの手順のようにするには、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
のようになる必要があります。 -
mercurial
Python パッケージをインストールするには、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.txt
hg log --template "{author}\n" | sort | uniq > committers.txt
-
committers.txt
ファイルを更新し、Mercurial リポジトリで使われているコミッター名を、Git リポジトリで使用する名前に、次の形式でマッピングします。“The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
-
初期化された 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 に移動してから、もう一度やり直してください。