Mercurial: "Managing change with Mercurial Queues" を読む(4)
Tagged:  •    •  

前回に引き続き "12.11 Managing patches in a repository" から読み始めます。

この節では、 MQ ではパッチスタックそのものも Mercurial の枠組みで構成管理することができること、 および実際にパッチスタックを構成管理する上で必要な事柄を説明しています。

12.11.1 MQ support for patch repositories

-c オプションつきで hg qinit により .hg/patches 配下を初期化する際に、 Mercurial リポジトリ形式で初期化することができます。

.hg/patches 配下のパッチ情報は、 自動的に hg add が実施されたり、 hg qcommit で直接コミットできるなど、 なかなか便利なようです。

12.11.2 A few things to watch out for

パッチスタックへの変更(例えば、 他のパッチスタックリポジトリから取り込んだ変更を hg update した)は、 hg qpop -ahg qpush -a で再度適用する必要があるそうです。

.hg/patches/.hg/hgrc に Mercurial のフック([hooks]update) を書いておいて、 hg qpop -a/hg qpush -a 適用を自動化する、 という手もありますね。

12.12 Third party tools for working with patches

diffstat や、 patchutils が紹介されています。

"12.6.5 Handling rejection" で紹介されたツール同様、 普段は「パッチ」を扱うことが殆ど無いため、 これらのツールの名前は初めて知りました。

「面倒臭い」のあるところ開発のネタあり、 というところでしょうか。

12.13 Good ways to work with patches

「説明的な名前を付けろ(Give your patches descriptive names)」、 「常に作業対象を把握せよ(Be aware of what patch you're working on)」や 「便利なツールの習熟に時間を費やせ (learn how to use some of the third-party tools)」というのは、 パッチや MQ に限った話ではないですね。

12.14 MQ cookbook
12.14.1 Manage 'trivial' patches

「ちょっとしたパッチ」のつもりでも、 後のリベースのことを考えた場合、 MQ でパッチ管理を行っておいた方が良い、 というのは確かにそうですね。

個人的にも、 もっと早く MQ を使えるようになっていれば、 Mercurial へのパッチの作成も、 少しは楽になっていたような気がします。 「分散リポジトリ」による「ローカルコミット」だけでも十分便利なのですが。

12.14.2 Combining entire patches

この節は hg qfold が全てです。

12.14.3 Merging part of one patch into another

"MQ cookbook" というよりは、 "patch cookbook"(あるいは "More about patches 再び") という感じですが、 filterdiff を使ったパッチの 「調理方法」が説明されています。

パッチを切り刻んで繋げ直したりする必要があるのも、 世界中からパッチを受け付けるフリーソフトウェア (or オープンソースソフトウェア)ならではなのでしょうが、 ツールを使うにしろ随分と手間隙が掛かるわけですから頭の下がる思いです。

12.15 Differences between quilt and MQ

MQ と quilt はコマンド体系が似ているらしいです。 既に quilt に親しんでいる方はこの節を読んでおいたほうが良いでしょう。


以上で "Managing change with Mercurial Queues" の節は終了です。 次回は "13 Advanced uses of Mercurial Queues" を読む予定です。


"Distributed revision control with Mercurial" 関連エントリの一覧は、BOSBook(Bryan O’Sullivan Book)タグで参照できます。