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
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
hg push bb
その後の運用
一応、自分の変更内容は hokorobi ブランチを作成して、そこにコミットしています。
Github の方に変更があった場合は、pull して merge しています。変更のチェックは RSS https://github.com/NeoCat/twicli/commits/master.atom を Feedly に入れています。
hokorobi リポジトリにいる状態で(普段 default ブランチに移ることは、まずありません)
hg pull hg merge default hg ci -m "merge default"
適当なところで Bitbucket にも push。(nudge は push -r . のエイリアス。)
hg nudge bb
Github も Bitbucket も両方使えばいいじゃない。