~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/ja/user-guide/hooks.txt

Rework test_script a little bit.


Don't allow someone to request a stdin request to echo.
Echo never reads from stdin, it just echos its arguments.
You use 'cat' if you want to read from stdin.

A few other fixes because the tests were using filenames
that are actually illegal on Windows, rather than just
nonexistant.


Change the exception handling for commands so that
unknown errors don't get silently squashed and then
turn into hard-to-debug errors later.

test_script now passes on Windows.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
フックを利用する
2
 
================
3
 
 
4
 
フックとは?
5
 
------------
6
 
 
7
 
Bazaarのふるまいをカスタマイズする1つの方法は *フック(hook)* です。
8
 
フックによって特定のBazaarの特定のオペレーションの前後でアクションを実行できます。
9
 
オペレーションは ``commit`` 、 ``push`` 、 ``pull`` 、と ``uncommit`` を含みます。
10
 
フックとパラメータの完全なリストに関しては、ユーザーリファレンスの
11
 
`フック <../user-reference/bzr_man.html#hooks>`_ を参照してください。
12
 
 
13
 
大抵のフックはクライアントで実行されますが、サーバーで実行されるものもわずかにあります。
14
 
(サーバーサイドのオペレーションの特殊なケースを扱うものは `bzr-push-and-update`_ プラグインも参照。)
15
 
 
16
 
.. _bzr-push-and-update: https://launchpad.net/bzr-push-and-update/
17
 
 
18
 
 
19
 
フックを使用する
20
 
-----------------
21
 
 
22
 
フックを使用するには、 `プラグインを書きます <#writing-a-plugin>`_ 。
23
 
新しいコマンドを作成する代わりに、このプラグインはフックを定義してインストールします。例です::
24
 
 
25
 
    from bzrlib import branch
26
 
 
27
 
 
28
 
    def post_push_hook(push_result):
29
 
        print "The new revno is %d" % push_result.new_revno
30
 
 
31
 
 
32
 
    branch.Branch.hooks.install_named_hook('post_push', post_push_hook,
33
 
                                     'My post_push hook')
34
 
 
35
 
この例を使用するには、 ``push_hook.py`` という名前のファイルを作り
36
 
``plugins`` サブディレクトリに設置します。
37
 
(プラグインをインストールしていなければ、 ``plugins`` ディレクトリを作る必要があります)。
38
 
 
39
 
以上です!次回にpushすると、"The new revno is..."が表示されます。
40
 
もちろん、Pythonのフルパワーを思いとおりにできるので、フックはこれよりもはるかに手が込んでいます。
41
 
これでフックの使い方を理解したので、それらで何をするかはあなたしだいです。
42
 
 
43
 
プラグインのコードは2つのことを行います。
44
 
最初に、これは ``push`` が完了した後に実行する関数を定義します。
45
 
(代わりにインスタンスメソッドもしくは呼び出し可能なオブジェクトを使用することもできます。)
46
 
すべてのpushフックは単独の引数 ``push_result`` をとります。
47
 
 
48
 
2番目に、プラグインはフックをインストールします。
49
 
最初の引数 ``'post_push'`` はフックがインストールされている場所を特定します。
50
 
2番目の引数はフック自身です。3番目の引数は ``'My post_push hook'`` という名前で、
51
 
これは進行メッセージとエラーメッセージで使用されます。
52
 
 
53
 
 
54
 
フックをデバッグする
55
 
---------------------
56
 
 
57
 
インストールされたフックの一覧を表示するには、 ``hooks`` コマンドを使います::
58
 
 
59
 
    bzr hooks