1861.2.6
by Alexander Belchenko
branding: change Bazaar-NG to Bazaar |
1 |
============== |
2 |
Bazaar plugins |
|
3 |
============== |
|
1821.1.1
by Alexander Belchenko
win32 installer for bzr.dev.0.9 |
4 |
|
1861.2.6
by Alexander Belchenko
branding: change Bazaar-NG to Bazaar |
5 |
Information on how to use plugins in Bazaar. |
1821.1.1
by Alexander Belchenko
win32 installer for bzr.dev.0.9 |
6 |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
7 |
What is a Plugin |
8 |
================ |
|
1861.2.6
by Alexander Belchenko
branding: change Bazaar-NG to Bazaar |
9 |
A plugin is an external component for Bazaar that is typically made by |
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
10 |
third parties. A plugin is capable of augmenting Bazaar by adding new |
11 |
functionality. A plugin can also change current Bazaar behavior by |
|
12 |
replacing current functionality. Plugins often work as a way for |
|
13 |
developers to test new features for Bazaar prior to inclusion in the |
|
14 |
official codebase. Plugins can do a variety of things, including |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
15 |
overriding commands, adding new commands, providing additional network |
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
16 |
transports, or customizing log output. The sky is the limit for the |
2293.1.6
by Brad Crittenden
post review changes |
17 |
customization that can be done through plugins. |
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
18 |
|
19 |
Where to find Plugins |
|
20 |
===================== |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
21 |
We keep our list of plugins on the http://bazaar-vcs.org/BzrPlugins page. |
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
22 |
|
23 |
Writing a plugin |
|
24 |
================ |
|
25 |
Plugins are very similar to bzr core functionality. They can import |
|
26 |
anything in bzrlib. A plugin may simply override standard functionality, |
|
27 |
but most plugins supply new commands. |
|
28 |
||
29 |
To create a command, make a new object that derives from |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
30 |
``bzrlib.commands.Command``, and name it ``cmd_foo``, where foo is the name of |
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
31 |
your command. If you create a command whose name contains an underscore, |
32 |
it will appear in the UI with the underscore turned into a hyphen. For |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
33 |
example, `cmd_baz_import` will appear as `baz-import`. For examples of how |
34 |
to write commands, please see ``builtins.py``. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
35 |
|
36 |
Once you've created a command you must register the command with |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
37 |
``bzrlib.commands.register_command(cmd_foo)``. You must register the |
38 |
command when your file is imported, otherwise bzr will not see it. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
39 |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
40 |
Bzr will scan ``bzrlib/plugins`` and ``~/.bazaar/plugins`` for plugins |
41 |
by default. You can override this with ``BZR_PLUGIN_PATH``. Plugins |
|
42 |
may be either modules or packages. If your plugin is a single file, |
|
43 |
you can structure it as a module. If it has multiple files, or if you |
|
44 |
want to distribute it as a bzr branch, you should structure it as a |
|
45 |
package, i.e. a directory with an ``__init__.py`` file. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
46 |
|
47 |
Please feel free to contribute your plugin to BzrTools, if you think it |
|
48 |
would be useful to other people. |
|
49 |
||
50 |
How to Install a plugin |
|
51 |
======================= |
|
52 |
Installing a plugin is very easy! One can either install a plugin |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
53 |
system-wide or on a per user basis. Both methods involve creating a |
54 |
``plugins`` directory. Within this directory one can place plugins in |
|
55 |
subdirectories. For example, ``plugins/bzrtools/``. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
56 |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
57 |
Two locations are currently checked: the bzrlib/plugins directory |
58 |
(typically found in ``/usr/lib/python2.4/site-packages/bzrlib/plugins/``) and |
|
59 |
``$HOME/.bazaar/plugins/``. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
60 |
|
61 |
One can additionally override the home plugins by setting the environment |
|
2293.1.3
by Brad Crittenden
Updated version_info.txt for grammar changes |
62 |
variable ``BZR_PLUGIN_PATH`` to a directory that contains plugins. The |
63 |
installation of a plugin can be checked by running ``bzr plugins`` at |
|
64 |
any time. New commands can be seen by running ``bzr help commands``. |
|
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
65 |
|
1861.2.6
by Alexander Belchenko
branding: change Bazaar-NG to Bazaar |
66 |
Plugins work particularly well with Bazaar branches. For example, to |
1610.2.1
by James Blackwell
Copied in docs for wiki & First round cleanup |
67 |
install the bzrtools plugins for your main user account, one can perform |
68 |
the following:: |
|
69 |
||
70 |
bzr branch http://panoramicfeedback.com/opensource/bzr/bzrtools |
|
71 |
~/.bazaar/plugins/bzrtools |
|
72 |