~bzr-pqm/bzr/bzr.dev

2977.1.1 by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2
1
Writing a plugin
2
================
3
4
Introduction
5
------------
6
7
Plugins are very similar to bzr core functionality.  They can import
8
anything in bzrlib.  A plugin may simply override standard functionality,
9
but most plugins supply new commands.
10
11
Creating a new command
12
----------------------
13
14
To create a command, make a new object that derives from
15
``bzrlib.commands.Command``, and name it ``cmd_foo``, where foo is the name of
16
your command.  If you create a command whose name contains an underscore,
17
it will appear in the UI with the underscore turned into a hyphen.  For
18
example, `cmd_baz_import` will appear as `baz-import`.  For examples of how
19
to write commands, please see ``builtins.py``.
20
21
Once you've created a command you must register the command with
22
``bzrlib.commands.register_command(cmd_foo)``.  You must register the
23
command when your file is imported, otherwise bzr will not see it.
24
5168.2.1 by Andrew Bennetts
Add example merge_file_content hook based on my answer to <https://answers.edge.launchpad.net/bzr/+question/103163>.
25
Installing a hook
26
-----------------
27
28
See `Using hooks`_.
29
30
 .. _Using hooks: hooks.txt
31
32
3777.6.2 by Marius Kruger
Give an indication of how to specify a plugin version number
33
Specifying a plugin version number
34
----------------------------------
35
Simply define ``version_info`` to be a tuple defining the current version
36
number of your plugin. eg.
37
``version_info = (0, 9, 0)``
38
``version_info = (0, 9, 0, 'dev', 0)``
39
2977.1.1 by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2
40
Plugin searching rules
41
----------------------
42
4628.2.3 by Vincent Ladeuil
Update doc and add NEWS entry.
43
Bzr will scan ``~/.bazaar/plugins``  and ``bzrlib/plugins`` for plugins
44
by default.  You can override this with  ``BZR_PLUGIN_PATH``
45
(see `User Reference <../user-reference/bzr_man.html#bzr-plugin-path>`_
46
for details).
47
48
Plugins may be either modules or packages.  If your plugin is a single
49
file, you can structure it as a module.  If it has multiple files, or if
50
you want to distribute it as a bzr branch, you should structure it as a
2977.1.1 by Ian Clatworthy
First cut at new look User Guide including chapters 1 and 2
51
package, i.e. a directory with an ``__init__.py`` file.
52
53
More information
54
----------------
55
56
Please feel free to contribute your plugin to BzrTools, if you think it
57
would be useful to other people.
58
59
See the `Bazaar Developer Guide`_ for details on Bazaar's development
60
guidelines and policies.
61
62
.. _Bazaar Developer Guide: ../developer-guide/HACKING.html