77
77
Always conflicts if both branches have changed the file.
80
from bzrlib.merge import AbstractPerFileMerger, Merger
80
from bzrlib.merge import PerFileMerger, Merger
82
82
def merge_xml_files_hook(merger):
83
83
"""Hook to merge *.xml files"""
84
84
return MergeXMLFiles(merger)
86
class MergeXMLFiles(AbstractPerFileMerger):
88
def filename_matches(self, params):
89
inventory = self.merger.this_tree.inventory
90
filename = inventory[params.file_id].name
91
if filename.endswith('.xml'):
94
def merge_contents(self, params):
95
"""Merge the contents of a single file."""
96
# First, check whether this custom merge logic should be used. We
97
# expect most files should not be merged by this handler.
99
# OTHER is a straight winner, rely on default merge.
100
params.winner == 'other' or
101
# THIS and OTHER aren't both files.
102
not params.is_file_merge() or
103
# The filename doesn't match *.xml
104
not self.filename_matches(params)):
105
return 'not_applicable', None
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):
106
93
return 'conflicted', params.this_lines
108
95
Merger.hooks.install_named_hook(