Github のリポジトリを Bitbucket と Mercurial で使っています

このエントリは、Mercurial Advent Calendar 2013 の6日目です。
誰かが Github で公開しているリポジトリに対して、そこから fork するリポジトリは Pull Requests (PR) 用に使うので、自分がごちゃごちゃと手を入れるリポジトリは Bitbucket に作っています。
PR を送りたいなと思ったら Github 上で fork して、PR が取り込まれたらリポジトリは消しています。
ブランチ切れば良いのでは? という話もあるとは思いますが……。

設定

Github から hg clone できるように hg-git をインストール。
例えば、M:\hgext で以下を実行。

hg clone https://bitbucket.org/durin42/hg-git

%USERPROFILE%\Mercurial.ini とかの [extensions] に追加

[extensions]
hggit = M:\hgext\hg-git\hggit

Github から clone

お世話になっている twicli https://github.com/NeoCat/twicli/ を例にします。(最近(?) git:// の URL は、Github の colone URL には含まれなくなったんですね。)

hg clone git://github.com/NeoCat/twicli.git

カレントディレクトリに twicli ディレクトリができあがり。

Bitbucket に push

いつもどおりに Bitbucket に twicli リポジトリを作成しておきます。
hgbb を使えば、Web 画面からじゃなくてもできるんでしょうね。)

twicli\.hg\hgrc に作成したリポジトリを指定します。default は既にあるので、Bitbucket は bb として登録します。hokorobi は各自のアカウント名になります。

[paths]
default = git://github.com/NeoCat/twicli.git
bb = ssh://hg@bitbucket.org/hokorobi/twicli

twicli ディレクトリで

hg push bb

その後の運用

一応、自分の変更内容は hokorobi ブランチを作成して、そこにコミットしています。

Github の方に変更があった場合は、pull して merge しています。変更のチェックは RSS https://github.com/NeoCat/twicli/commits/master.atomFeedly に入れています。
hokorobi リポジトリにいる状態で(普段 default ブランチに移ることは、まずありません)

hg pull
hg merge default
hg ci -m "merge default"

適当なところで Bitbucket にも push。(nudge は push -r . のエイリアス。)

hg nudge bb

Github も Bitbucket も両方使えばいいじゃない。