~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/merge.py

Made weave merge succeed if interesting files match history

Show diffs side-by-side

added added

removed removed

Lines of Context:
366
366
        self.this_rev_id = None
367
367
        self.this_tree = this_branch.working_tree()
368
368
        self.this_revision_tree = None
 
369
        self.this_basis_tree = None
369
370
        self.other_tree = other_tree
370
371
        self.base_tree = base_tree
371
372
        self.ignore_zero = False
381
382
 
382
383
    def ensure_revision_trees(self):
383
384
        if self.this_revision_tree is None:
384
 
            if self.this_rev_id is None:
385
 
                self.compare_basis()
386
 
            if self.this_rev_id is None:
387
 
                raise WorkingTreeNotRevision(self.this_tree)
388
 
            self.this_revision_tree = self.this_branch.revision_tree(
389
 
                self.this_rev_id)
 
385
            self.this_basis_tree = self.this_branch.revision_tree(
 
386
                self.this_basis)
 
387
            if self.this_basis == self.this_rev_id:
 
388
                self.this_revision_tree = self.this_basis_tree
 
389
 
390
390
 
391
391
        if self.other_rev_id is None:
392
392
            other_basis_tree = self.revision_tree(self.other_basis)
403
403
            revision_id = tree.inventory[file_id].revision
404
404
            assert revision_id is not None
405
405
            return revision_id
406
 
        trees = (self.this_revision_tree, self.other_tree)
 
406
        if self.this_rev_id is None:
 
407
            if self.this_basis_tree.get_file_sha1(file_id) != \
 
408
                self.this_tree.get_file_sha1(file_id):
 
409
                raise WorkingTreeNotRevision(self.this_tree)
 
410
 
 
411
        trees = (self.this_basis_tree, self.other_tree)
407
412
        return [get_id(tree, file_id) for tree in trees]
408
413
            
409
414
 
412
417
            if self.show_base is True:
413
418
                raise BzrError("Cannot show base for hisory-based merges")
414
419
            if self.reprocess is True:
415
 
                raise BzrError("Cannot reprocess hisory-based merges")
 
420
                raise BzrError("Cannot reprocess history-based merges")
416
421
                
417
422
            t_revid, o_revid = self.file_revisions(file_id)
418
 
            weave = self.this_revision_tree.get_weave(file_id)
 
423
            weave = self.this_basis_tree.get_weave(file_id)
419
424
            contents_change = self.merge_type(weave, t_revid, o_revid)
420
425
        else:
421
426
            if self.show_base is True or self.reprocess is True:
517
522
    def do_merge(self):
518
523
        def get_inventory(tree):
519
524
            return tree.inventory
520
 
 
 
525
        
521
526
        inv_changes = merge_flex(self.this_tree, self.base_tree, 
522
527
                                 self.other_tree,
523
528
                                 generate_changeset, get_inventory,