Bazaar Explorerにコマンドを追加する

今日は、Bazaar Explorerに関するちょっとしたTipsのお話です。

Bazaar Explorerは、皆さんご存知のBazaar標準のGUIクライアントですが、こいつには「アクセサリ」という、(たぶん)あまり知られていない機能があって、これでいろいろとコマンドを追加したりすることができます。

概要

ファイル>アクセサリ で、以下の画面が表示されます。

説明を見ると、こんなことが書いてあります。

標準で提供されるエクステンション
バッグ
プラグインによって提供されるエクステンション
財布
ユーザ単位で定義するエクステンション
帽子
プロジェクト単位で定義するエクステンション

それぞれのネーミングが面白いですね。今回は、「財布」と「帽子」を作ってみます。

財布

ツール>ツールの追加 を選択すると、以下の画面が表示されます。とりあえず、直近10リビジョンのログを表示するコマンドを定義してみます。

コマンドを定義すると、以下のようにツールボックス内に定義したコマンドが表示されます。

この設定は、tools.xmlというファイルに保存されます。
ツール>My ツールの編集 で、このファイルがエディタで開かれるので、そこで直接編集すれば、以下のようにフォルダ構成を定義することもできます。

<folder title="My Tools">
  <folder title="ユーティリティ" icon="status/folder-open">
    <tool action="log -r -10..-1" icon="actions/appointment-new" title="最近の履歴" type="bzr" />
  </folder>
</folder>


※コマンド名に日本語を使用すると、tools.xmlにはエンコードされた状態で書き込まれるようです。tools.xmlを手で編集するときには、直接日本語で入力して構いません。
ただし、その場合はUTF-8で保存するようにしてください。

帽子

「財布」として定義されたコマンドは、全てのプロジェクト(全てのブランチ)から利用できますが、特定のプロジェクトのブランチを開いているときだけ使えるようにしたいコマンドもあると思います。例えば、ビルドスクリプトの実行や、そのプロジェクトのBTSへの投稿とかでしょうか。
そういうものは、「帽子」として定義します。

「帽子」の実体は、Bazaar Explorerのインストール先にある、 hatsというディレクトリの中にあります。
※Bazaar Explorerのインストール先が分からなければ、以下のコマンドで確認できます。

$ bzr plugins --verbose
・・・(略)・・・
  explorer 1.2.0dev
    Version Control for Human Beings.
     D:\DEVELOP\BZR_PLUGINS\explorer
・・・(略)・・・

このディレクトリの中に、bzr、qbzrなどのサブディレクトリがあるはずです。これがそれぞれの帽子の実体です。これらをまねて、my-projectという帽子を作ってみます。

my-projectというサブディレクトリを作成して、そこに以下のファイルを配置します。

icon.png
アクセサリ画面などに表示されるアイコン
tools.xml
コマンドの定義を記述するXMLファイル

あとは、tools.xmlの中身を作れば完成なのですが、残念ながらこのファイルを編集するための機能は無いので、手書きする必要があります。書式は「財布」の場合と同じなので、手書きするのが難しければ「ツールの追加」で財布の方に定義した後、こちらにコピペすればいいでしょう。

ちなみに、僕は仕事用のブランチでは以下のようなコマンドを帽子に入れています。

帽子を作ったあと、my-projectという名前のブランチをBazaar Explorerで開くと、以下のようなメッセージボックスが表示されるので、「はい」を選択すると、ブランチと帽子がリンクされます。

※ブランチと帽子との関連付けは、explorer.confというファイルのHat_Selection_Rulesというセクションに保存されます。(explorer.confは、ツール>My ツールの編集 で開かれるtools.xmlと同じフォルダにあります。)
間違って関連付けてしまった帽子を外したい場合や、帽子の名前とブランチのフォルダ名が違っていて自動で関連付けができない場合は、ここを直接編集してください。

[Hat_Selection_Rules]
0=D:/DEVELOP/BZR/my-project|my-project
1=D:/DEVELOP/BZR/qbzr|qbzr
2=D:/DEVELOP/BZR_PLUGINS/qbzr|qbzr

作った帽子はフォルダごと別のマシンに持っていけるので、プロジェクトの別のメンバとも共有すれば、チームでの開発もいろいろ捗るんじゃないでしょうか。

2011-12-23 追記
ツールの追加で「Bazaarコマンド」を指定すると、type=bzr という定義が生成されます。
このツールを呼び出すと、まず画面が表示されて、そこで「OK」を押すと指定したコマンドが実行されます。
この、type=bzrという定義を、type=bzr-execに書き換えると、ツールの呼び出しと同時にコマンドが実行される(OKボタンを押す手間がなくなる)ようにすることができます。