hg から git に変換する
最近14年つかっていたdocomoからMNPでauにうつりました。
長年つかっていたのでdocomoに愛着もあったのですが、いかんせんネットの情報を鵜呑みにする情強をきどるには、docomoはつらすぎ感がすごく…。
情しか理由のない選択に意味はあるのか?と悩んだ末に、まあauにしました。
本題 hgをgitに移行する話。
単純に最新をcheckoutして、そのままcommitするとログもブランチも消し飛ぶのでつらい(当たり前)
とはいえ、世の中にはちゃんとツールがある
git clone git://repo.or.cz/fast-export.git
mkdir -p /path/to/new_git_repo cd /path/to/new_git_repo git init /path/to/fast-export/hg-fast-export.sh -r /path/to/old_hg_repo/ git checkout master ((インポート直後、checkoutされてないのにびっくりする))
無事にどうにかなかった。
tigでコミットツリーをみるかぎり、文字化けもなくほぼ完全再現っぽい、すごい!!
内部的にはpythonです
python2.7っぽい、3.3.1だとうごかなかった。
pyenvいれてるんですが、2.7(system)におとして作業した。
default(hgのマスタブランチ)はmasterに変更される
オプションで設定はできるけど、注意が必要。
所でなんでhgが嫌なのか?
gitの感覚でブランチをつくりまくって放置すると、消せないブランチが出てくるのがだるい。
消せない、というのは正しくないのだが、かなり長い事放置してたブランチを消す時に、なんやら面倒な感じになる。hgの思想上どうしようもない。
ブランチやめて、tagで代用しよう!みたいなのをしばしばみるが、なんかわかりづらい。
あと、愛用してるPHPStormがあまり真面目にhgサポートしてなくてつらい。PHPStorm+CLIもしくはSourceTreeで作業するのはそろそろめんどい感がすごい。
とはいえ、私が最初にhgをつかったのは、Netbeansをつかっていたからで、あれはそれなりにサポートしていたのだが、そのために微妙になってしまったNBつかいつづけるのもちょっと…。
まあ、なんやらかんやら、ちょいちょいgitとは違うのがだるい(pullとか、良い悪いではなく)。stashの仕組みもわかりづらい。
開発ブランチとリリースブランチをまちがえて作業してしまい、うあ〜!!って書いたらgit情強の人が「こうやればいいよ!」って教えてくれるけどhgではまったく活用できない。
そもそも、この地味にレガシーな案件意外、ほぼgitしか無くなったのでもう統一したい。
ところで、hgのいい所
gitがはいらない環境(いれるのが大変な環境)というのがたまあって、なぜかそう言う所にもhgはスンナリ入る(という体験を何度かしている)。
所で…
hg->gitの移設が「できる」ということが確認できただけで、自分はまだ移動できていないのでした(つらい)
デプロイをhgでやってるので、サーバー側も色々かえないといけないし、そのhgレポジトリでデプロイしてるサーバー(というか、サイト)が30位あるんですよね、つらい。*1
*1:上に書いた通り、gitがはいらない環境もある…