uzullaがブログ

uzullaがブログです。

hg から git に変換する

最近14年つかっていたdocomoからMNPauにうつりました。
長年つかっていたので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がはいらない環境もある…