MercurialのリポジトリをGitのリポジトリに変換
hg-fast-exportというものを使えばできるらしい。
ただ変換後にちょっとエラーが起こったので対処法も含めてメモっておく。
https://hoge.com/hoge/というMercurialのリポジトリを変換する例
$ git clone git://repo.or.cz/fast-export.git
$ hg clone https://hoge.com/hoge/
$ cd hoge
$ git init
$ ../hg-fast-export.sh -r .
ただ変換すると一部のコミットの日付がおかしいことになっており、pushしようとすると以下のエラーが出た。
error: object 64db85a4528218edf2fc9a08a34ff9b5e8ee69c6:invalid author/committer line - bad date
エラーが出ているコミットを見ると以下のようになっていた。
commit 64db85a4528218edf2fc9a08a34ff9b5e8ee69c6
Author: Shinichi <>
Date: Thu Jan 1 00:00:00 1970 +0000
first commit
以下のようなシェルスクリプトを実行して日付を修正する。
git filter-branch --env-filter \
'if [ $GIT_COMMIT = 64db85a4528218edf2fc9a08a34ff9b5e8ee69c6 ]
then
export GIT_AUTHOR_DATE="Sun May 23 18:09:52 2010 +0900"
export GIT_COMMITTER_DATE="Sun May 23 18:09:52 2010 +0900"
fi'