hgsubversionでmergeからの〜push

svnをhgsubversionで使ってるんですがマージが結構めんどくさいんですよね。

今までは理解してなかったので、コミットする直前にpullしてupdateしてcommitしてすかさずpushしてました。

これだとmercurial使う意味ありません。
実際rollbackの為だけに使ってたようなものです。

ようやく理解してきたのでメモっときます。

誰かのコミットとかち合うとpullしてきたときに
「mergeするかhg up --cleanして下さい」みたいなこと言われます。

なので一回マージします。がその前にコミットしときましょう。
と言うかコミットしないとマージできなかったような。
どちらにせよコミットしとけば元に戻せますし、後で泣かなくて済みます。

$ hg merge [mergeしたいrevision]
$ hg commit

でこれでpushしようとするとなんか文句言われます。
mergeしたrevisionはpushできないらしいです。

$ hg update -r [merge前revision]
$ hg revert -r [merge済revision]
$ hg commit
$ hg push

なので上のようにマージしてないrevision用意してやってpushしてやればOKみたいです。
なんだかめんどくさいですね。

予め

$ hg serve

でサーバー起動してブラウザからhttp://localhost:8000を開いてgraph見るとどんな状態になってるのかわかりやすいと思います。
このhg serveは手軽で便利だよなー。差分見やすいし。