~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

Tree Transform-based merger

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import bzrlib.branch
27
27
from bzrlib.branch import Branch
28
28
import bzrlib.bzrdir as bzrdir
29
 
from bzrlib._merge_core import ApplyMerge3
30
29
from bzrlib.commands import Command, display_command
31
30
from bzrlib.revision import common_ancestor
32
31
import bzrlib.errors as errors
34
33
                           NotBranchError, DivergedBranches, NotConflicted,
35
34
                           NoSuchFile, NoWorkingTree, FileInWrongBranch)
36
35
from bzrlib.log import show_one_log
 
36
from bzrlib.merge import Merge3Merger
37
37
from bzrlib.option import Option
38
38
from bzrlib.revisionspec import RevisionSpec
39
39
import bzrlib.trace
1719
1719
 
1720
1720
    def run(self, branch=None, revision=None, force=False, merge_type=None,
1721
1721
            show_base=False, reprocess=False):
1722
 
        from bzrlib._merge_core import ApplyMerge3
1723
1722
        if merge_type is None:
1724
 
            merge_type = ApplyMerge3
 
1723
            merge_type = Merge3Merger
1725
1724
        if branch is None:
1726
1725
            branch = WorkingTree.open_containing(u'.')[0].branch.get_parent()
1727
1726
            if branch is None:
1776
1775
    def run(self, file_list=None, merge_type=None, show_base=False,
1777
1776
            reprocess=False):
1778
1777
        from bzrlib.merge import merge_inner, transform_tree
1779
 
        from bzrlib._merge_core import ApplyMerge3
1780
1778
        if merge_type is None:
1781
 
            merge_type = ApplyMerge3
 
1779
            merge_type = Merge3Merger
1782
1780
        tree, file_list = tree_files(file_list)
1783
1781
        tree.lock_write()
1784
1782
        try:
2160
2158
 
2161
2159
def merge(other_revision, base_revision,
2162
2160
          check_clean=True, ignore_zero=False,
2163
 
          this_dir=None, backup_files=False, merge_type=ApplyMerge3,
 
2161
          this_dir=None, backup_files=False, merge_type=Merge3Merger,
2164
2162
          file_list=None, show_base=False, reprocess=False):
2165
2163
    """Merge changes into a tree.
2166
2164
 
2189
2187
    clients might prefer to call merge.merge_inner(), which has less magic 
2190
2188
    behavior.
2191
2189
    """
2192
 
    from bzrlib.merge import Merger, _MergeConflictHandler
 
2190
    from bzrlib.merge import Merger
2193
2191
    if this_dir is None:
2194
2192
        this_dir = u'.'
2195
2193
    this_tree = WorkingTree.open_containing(this_dir)[0]
2196
 
    if show_base and not merge_type is ApplyMerge3:
 
2194
    if show_base and not merge_type is Merge3Merger:
2197
2195
        raise BzrCommandError("Show-base is not supported for this merge"
2198
2196
                              " type. %s" % merge_type)
2199
 
    if reprocess and not merge_type is ApplyMerge3:
 
2197
    if reprocess and not merge_type is Merge3Merger:
2200
2198
        raise BzrCommandError("Reprocess is not supported for this merge"
2201
2199
                              " type. %s" % merge_type)
2202
2200
    if reprocess and show_base:
2213
2211
    merger.set_interesting_files(file_list)
2214
2212
    merger.show_base = show_base 
2215
2213
    merger.reprocess = reprocess
2216
 
    merger.conflict_handler = _MergeConflictHandler(merger.this_tree, 
2217
 
                                                    merger.base_tree, 
2218
 
                                                    merger.other_tree,
2219
 
                                                    ignore_zero=ignore_zero)
2220
2214
    conflicts = merger.do_merge()
2221
2215
    merger.set_pending()
2222
2216
    return conflicts