Mercurial publication via GitBucket

GitBucket すごいね。Mercurial 使いとしては git/hg 両対応の Kallithea が気になるところだが、Pythonライブラリが多すぎて断念。
※2018-11-12追記 Kallithea 簡単に入った

さて、普段の開発環境を Mercurial に保ったまま GitBucket の公開リポジトリとリンクする方法。前提としてはこんな感じ。

ちなみにMercurialでブランチを分けずに使っていたら手順を飛ばしてよい。

Mercurial本体の準備

まず非標準 extension の hg-git が必要。hg-git には dulwich が必要。両方入れておく。

GitBucketの新規リポジトリへの同期

hg-git では git ブランチと、Mercurial ブックマークを対応付けるので、 Mercurial でブランチを利用してた場合はブックマークに紐付ければよい。 以下の説明では、GitBucket リポジトリへのSSH接続設定が完了しているとする。

  1. GitBucket リポジトリ作成

    先にGitBucketのWeb UIで New Repository を作る。その URL が user@remote-git:/user/repo だとする。

  2. Mercurial リポジトリの複製とpush

    既存の Mercurial リポジトリのクローンを作りそこで GitBucket との連繋をはかる。

    hg clone /existing/repo ./repo-git     
    cd repo-git     
    

    既存の Mercurial ブランチが default(公開版) と dev(開発版) だったとする。これをそれぞれブックマーク master, devel に対応付ける。ブランチとブックマークは同名にできない。

    hg bookmark -r default master
    hg bookmark -r dev devel
    

    これで準備OK。

  3. GitBucket リポジトリへの同期

    hgのpush先を登録しておく。.hg/hgrc の paths セクションをいじる。

    [paths]
    default = user@remote-git:/user/repo.git
    

    default= でなくて git= とかにしておいてもよいだろう。おもむろに push!

    hg push
    

push できたら GitBucket の Web UI から確認してみる。 2つのGitブランチができているはず。

その後の操作の注意としては

というのがポイントである。後者については、公開版にマージするときに 以下のようにするということである。

hg up -C master		# (これは hg up -C default でも可)
hg merge dev			# (hg merge devel(ブックマーク名) ダメ)

いずれにせよ、hgブランチを残し続けたい場合は ブックマークとブランチの対応をしっかり確認取り続けないとあぶない。

つづく…