ページ

2012年10月18日木曜日

MQ

MQ

KOBO のパッチを公開しているのだが、そろそろ ML に投げようかと思い、パッチを見直す。i2c の対応は別のパッチに分割しようかと考えた瞬間 mercurial の MQ 使いたいなと思いまして、 bitbucket のリポジトリが中途半端だったのを思い出して作業したのが前回の分。

ということで今回は MQについて。
(手段と目的が逆転するのはいつものことなので気にしない)

MQ については このへん が大変役に立ちます。

作業記録

-> hg clone https://bitbucket.org/hkenichi/netbsd-src
-> cd netbsd-src

でまず前回作った NetBSD の mercurial リポジトリを clone で引っ張ってくる。

-> hg qinit
-> hg qnew kobo

とすることで今から作るパッチに "kobo" という名前を付ける。
ここで以前つくったパッチを当てる。コンフリクトはしないと思う。

 -> patch -p0 < ../kobo.diff

とここまで書いたけどやっぱりパッチを分割するの面倒になってきた。。。
別にこのままでも良いかとか思ってしまったである。
まあ、今後は mercurial の MQ 使えばちゃんとパッチを分けられますよねということで。。。

-> hg addremove
-> hg qrefresh

としてパッチ作成完了。

-> hg qpop -a
-> hg pull https://bitbucket.org/hkenichi/netbsd-src
-> hg update
-> hg qpush -a

としてやれば、最新の環境にパッチを当て直すことができます。
まあ便利。

これの利点はパッチを保存しておけるということ。
作業手順は増えるのですが、ちゃんとパッチセットが保存されているということとパッチスタックとしてどんどん積んでいけるのは非常に便利です。

本当は最初から MQ 使って複数の修正を一つずつパッチセットに積んでいくべきだったのですね。

ちなみに MQ と使ったパッチ作成は元が cvs のリポジトリでも何の問題もありません。
"hg pull" "hg update" のところを "cvs update" にしてやれば MQ の機能は使えます。(もうちょっといろいろあるけど説明端折ってる。)

https://wiki.mozilla.org/Using_Mercurial_locally_with_CVS
にもっと詳しく書いてありますので参考にしてください。

0 件のコメント:

コメントを投稿