Edited at

git-cinnabar の導入 - mercurial リポジトリを git で開発する

More than 3 years have passed since last update.

mercurial リポジトリの Unity UI を git リポジトリで管理・開発したい。

mercurial の作法を意識することなく git リポジトリで開発したり、アップストリームの差分を取り込めるようにしたり、いずれは PR を送るので自社開発した分も mercurial リポジトリに反映したい。

git-cinnabar を利用すればそれっぽい事をできそうだったので導入した。

本稿ではその時の手順をまとめてある。


git-cinnabar

https://github.com/glandium/git-cinnabar

git コマンドが mercurial リポジトリと仲良くなれるようにするモジュール。

git ログもキッチリ反映してくれる優れモノ。


環境

OS X : 10.11.5

python : 2.7.10 (built in)

git : 2.7.4 (command line tools for Xcode)

brew : 0.9.9


事前準備


  • アップストリームの mercurial リポジトリのフォーク

  • フォークしたリポジトリと同期するための git リポジトリ作成


依存モジュールのインストール


python module Merculial

https://pypi.python.org/pypi/Mercurial

git-cinnabar が内部で利用しているので入れておいてあげる。

$ curl -o https://pypi.python.org/packages/12/a6/c6c8fc072feb0255d18c32f9aa29595d418e542d91bcc50cb77042f7da46/mercurial-3.9-rc.tar.gz#md5=2bb529089511340a01c21c60e2d3bb29 mercurial-3.9-rc.tar.gz

$ tar -xzvf mercurial-3.9-rc.tar.gz # 普通に上記URLから落とすのも良し
$ pushd mercurial-3.9-rc
$ python setup.py install
$ popd
$ rm -rf mercurial-3.9-rc


git-cinnabar のインストール

$ git clone https://github.com/glandium/git-cinnabar.git

$ cd git-cinnabar
$ git submodule update --init
$ brew link --force openssl # openssl のリンカエラー回避
$ NO_GETTEXT=1 make helper # libintl.h が mac にないので gettext を無視する
$ echo "PATH=\${PATH}:$(pwd)" >> ~/.bash_profile # パスを通す
$ source ~/.bash_profile

以上で git を利用した通常の開発と同じように mercurial リポジトリを扱えます。


注意点

git で PR 用のリポジトリをリモートに作る感覚で下記のようなコマンドを打っても、clone 時のリポジトリに反映されてしまう。

git push mercurial sonzaisinai_repo


ひとまず導入して基本的な操作が出来ることを確認した段階です。

その他の注意点やノウハウは、都度更新します。