フックを利用する

Bazaar

フックを利用する

フックとは?

Bazaarのふるまいをカスタマイズする1つの方法は フック(hook) です。 フックによって特定のBazaarの特定のオペレーションの前後でアクションを実行できます。 オペレーションは commitpushpull 、と uncommit を含みます。 フックとパラメータの完全なリストに関しては、ユーザーリファレンスの フック を参照してください。

大抵のフックはクライアントで実行されますが、サーバーで実行されるものもわずかにあります。 (サーバーサイドのオペレーションの特殊なケースを扱うものは bzr-push-and-update プラグインも参照。)

フックを使用する

フックを使用するには、 プラグインを書きます 。 新しいコマンドを作成する代わりに、このプラグインはフックを定義してインストールします。例です:

from bzrlib import branch


def post_push_hook(push_result):
    print "The new revno is %d" % push_result.new_revno


branch.Branch.hooks.install_named_hook('post_push', post_push_hook,
                                 'My post_push hook')

この例を使用するには、 push_hook.py という名前のファイルを作り plugins サブディレクトリに設置します。 (プラグインをインストールしていなければ、 plugins ディレクトリを作る必要があります)。

以上です!次回にpushすると、”The new revno is...”が表示されます。 もちろん、Pythonのフルパワーを思いとおりにできるので、フックはこれよりもはるかに手が込んでいます。 これでフックの使い方を理解したので、それらで何をするかはあなたしだいです。

プラグインのコードは2つのことを行います。 最初に、これは push が完了した後に実行する関数を定義します。 (代わりにインスタンスメソッドもしくは呼び出し可能なオブジェクトを使用することもできます。) すべてのpushフックは単独の引数 push_result をとります。

2番目に、プラグインはフックをインストールします。 最初の引数 'post_push' はフックがインストールされている場所を特定します。 2番目の引数はフック自身です。3番目の引数は 'My post_push hook' という名前で、 これは進行メッセージとエラーメッセージで使用されます。

フックをデバッグする

インストールされたフックの一覧を表示するには、 hooks コマンドを使います:

bzr hooks