60
To get a list of installed hooks (and available hook points), use the hidden
60
To get a list of installed hooks, use the hidden ``hooks`` command::
66
Example: a merge plugin
67
-----------------------
69
Here's a complete plugin that demonstrates the ``Merger.merge_file_content``
70
hook. It installs a hook that forces any merge of a file named ``*.xml``
71
to be a conflict, even if Bazaar thinks it can merge it cleanly.
75
"""Custom 'merge' logic for *.xml files.
77
Always conflicts if both branches have changed the file.
80
from bzrlib.merge import PerFileMerger, Merger
82
def merge_xml_files_hook(merger):
83
"""Hook to merge *.xml files"""
84
return MergeXMLFiles(merger)
86
class AlwaysConflictXMLMerger(PerFileMerger):
88
def file_matches(self, params):
89
filename = self.get_filename(params, self.merger.this_tree)
90
return filename.endswith('.xml')
92
def merge_matching(self, params):
93
return 'conflicted', params.this_lines
95
Merger.hooks.install_named_hook(
96
'merge_file_content', merge_xml_files_hook, '*.xml file merge')
98
``merge_file_content`` hooks are executed for each file to be merged. For
99
a more a complex example look at the ``news_merge`` plugin that's bundled with
100
Bazaar in the ``bzrlib/plugins`` directory.