/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

Add bzrlib.pyutils, which has get_named_object, a wrapper around __import__.

This is used to replace various ad hoc implementations of the same logic,
notably the version used in registry's _LazyObjectGetter which had a bug when
getting a module without also getting a member.  And of course, this new
function has unit tests, unlike the replaced code.

This also adds a KnownHooksRegistry subclass to provide a more natural home for
some other logic.

I'm not thrilled about the name of the new module or the new functions, but it's
hard to think of good names for such generic functionality.

Show diffs side-by-side

added added

removed removed

Lines of Context:
520
520
            parent_keys = [(file_id, self._file_revision(t, file_id)) for t in
521
521
                self._iter_parent_trees()]
522
522
            vf.add_lines((file_id, last_revision), parent_keys,
523
 
                         self.get_file(file_id).readlines())
 
523
                         self.get_file_lines(file_id))
524
524
            repo = self.branch.repository
525
525
            base_vf = repo.texts
526
526
        else:
582
582
            yield child.file_id
583
583
 
584
584
    def lock_read(self):
 
585
        """Lock this tree for multiple read only operations.
 
586
        
 
587
        :return: A bzrlib.lock.LogicalLockResult.
 
588
        """
585
589
        pass
586
590
 
587
591
    def revision_tree(self, revision_id):
1126
1130
            if file_id in to_paths:
1127
1131
                # already returned
1128
1132
                continue
1129
 
            if file_id not in self.target.all_file_ids():
 
1133
            if not self.target.has_id(file_id):
1130
1134
                # common case - paths we have not emitted are not present in
1131
1135
                # target.
1132
1136
                to_path = None