~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/merge.py

Implemented remerge

Show diffs side-by-side

added added

removed removed

Lines of Context:
269
269
    this_branch = Branch.open_containing(to_dir)[0]
270
270
    transform_tree(this_branch.working_tree(), this_branch.basis_tree())
271
271
 
272
 
def transform_tree(from_tree, to_tree):
273
 
    merge_inner(from_tree.branch, to_tree, from_tree, ignore_zero=True)
 
272
def transform_tree(from_tree, to_tree, interesting_ids=None):
 
273
    merge_inner(from_tree.branch, to_tree, from_tree, ignore_zero=True,
 
274
                interesting_ids=interesting_ids)
274
275
 
275
276
def merge(other_revision, base_revision,
276
277
          check_clean=True, ignore_zero=False,
335
336
 
336
337
def merge_inner(this_branch, other_tree, base_tree, ignore_zero=False,
337
338
                backup_files=False, merge_type=ApplyMerge3, 
338
 
                interesting_ids=None, show_base=False, reprocess=False):
 
339
                interesting_ids=None, show_base=False, reprocess=False, 
 
340
                other_rev_id=None):
339
341
    """Primary interface for merging. 
340
342
 
341
343
        typical use is probably 
344
346
        """
345
347
    merger = Merger(this_branch, other_tree, base_tree)
346
348
    merger.backup_files = False
347
 
    merger.merge_type = ApplyMerge3
 
349
    merger.merge_type = merge_type
348
350
    merger.interesting_ids = interesting_ids
349
351
    merger.show_base = show_base 
350
352
    merger.reprocess = reprocess
351
353
    merger.conflict_handler = MergeConflictHandler(merger.this_tree, base_tree, 
352
354
                                                   other_tree,
353
355
                                                   ignore_zero=ignore_zero)
 
356
    merger.other_rev_id = other_rev_id
 
357
    merger.other_basis = other_rev_id
354
358
    return merger.do_merge()
355
359
 
356
360
 
405
409
 
406
410
    def merge_factory(self, file_id, base, other):
407
411
        if self.merge_type.history_based:
 
412
            if self.show_base is True:
 
413
                raise BzrError("Cannot show base for hisory-based merges")
 
414
            if self.reprocess is True:
 
415
                raise BzrError("Cannot reprocess hisory-based merges")
 
416
                
408
417
            t_revid, o_revid = self.file_revisions(file_id)
409
418
            weave = self.this_revision_tree.get_weave(file_id)
410
419
            contents_change = self.merge_type(weave, t_revid, o_revid)