2767.2.1
by Aaron Bentley
Add documentation for hooks |
1 |
Using hooks |
2977.1.1
by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2 |
2 |
=========== |
3 |
||
4 |
What is a hook? |
|
5 |
--------------- |
|
2767.2.1
by Aaron Bentley
Add documentation for hooks |
6 |
|
2767.2.2
by Aaron Bentley
Split hooks doc into guide and reference |
7 |
One way to customize Bazaar's behaviour is with *hooks*. Hooks allow you to |
8 |
perform actions before or after certain Bazaar operations. The operations |
|
9 |
include ``commit``, ``push``, ``pull``, and ``uncommit``. |
|
2767.2.1
by Aaron Bentley
Add documentation for hooks |
10 |
|
2977.1.1
by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2 |
11 |
Using hooks |
12 |
----------- |
|
13 |
||
3089.3.15
by Ian Clatworthy
fix some links |
14 |
To use a hook, you should `write a plugin <#writing-a-plugin>`_. Instead of |
2767.2.1
by Aaron Bentley
Add documentation for hooks |
15 |
creating a new command, this plugin will define and install the hook. Here's |
16 |
an example:: |
|
17 |
||
18 |
from bzrlib import branch |
|
19 |
||
20 |
||
2767.2.2
by Aaron Bentley
Split hooks doc into guide and reference |
21 |
def post_push_hook(push_result): |
22 |
print "The new revno is %d" % push_result.new_revno |
|
2767.2.1
by Aaron Bentley
Add documentation for hooks |
23 |
|
24 |
||
3408.5.1
by Ian Clatworthy
fix User Guide example |
25 |
branch.Branch.hooks.install_named_hook('post_push', post_push_hook, |
3256.2.21
by Daniel Watkins
Updated docs. |
26 |
'My post_push hook') |
2767.2.1
by Aaron Bentley
Add documentation for hooks |
27 |
|
28 |
To use this example, create a file named ``push_hook.py``, and stick it in |
|
29 |
``plugins`` subdirectory of your configuration directory. (If you have never |
|
30 |
installed any plugins, you may need to create the ``plugins`` directory). |
|
31 |
||
32 |
First, we define a function that will be run after ``push`` completes. We |
|
2769.1.1
by Kent Gibson
Tweak Hook documentation |
33 |
could also use an instance method or a callable object. All push hooks take a |
2767.2.2
by Aaron Bentley
Split hooks doc into guide and reference |
34 |
single argument, the ``push_result``. |
2767.2.1
by Aaron Bentley
Add documentation for hooks |
35 |
|
36 |
Next, we install the hook. ``'post_push'`` identifies where we want to install |
|
3256.2.21
by Daniel Watkins
Updated docs. |
37 |
the hook, and the second parameter is the hook itself. We also give the hook a |
38 |
name 'My post_push hook', which can be used in progress messages and error |
|
39 |
messages. |
|
2767.2.1
by Aaron Bentley
Add documentation for hooks |
40 |
|
2767.2.2
by Aaron Bentley
Split hooks doc into guide and reference |
41 |
That's it! The next time you push, it should show "The new revno is...". |
42 |
Of course, hooks can be much more elaborate than this, because you have the |
|
43 |
full power of Python at your disposal. Now that you know how to use hooks, |
|
44 |
what you do with them is up to you. |
|
45 |
||
2977.1.1
by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2 |
46 |
Standard hooks |
47 |
-------------- |
|
48 |
||
3089.3.15
by Ian Clatworthy
fix some links |
49 |
For a complete list of hooks and their parameters, see `Hooks |
3089.3.1
by Ian Clatworthy
move reference material out of User Guide into User Reference |
50 |
<../user-reference/bzr_man.html#hooks>`_ in the User Reference. |
3254.2.11
by Daniel Watkins
Added some information to the user guide regarding 'bzr hooks'. |
51 |
|
52 |
Debugging hooks |
|
53 |
--------------- |
|
54 |
||
55 |
To get a list of installed hooks, use the hidden ``hooks`` command:: |
|
56 |
||
57 |
bzr hooks |