/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

  • Committer: Jelmer Vernooij
  • Date: 2012-01-24 00:16:15 UTC
  • mto: This revision was merged to the branch mainline in revision 6464.
  • Revision ID: jelmer@samba.org-20120124001615-ru3uwevs9d48kxcn
Add root_inventory.

Show diffs side-by-side

added added

removed removed

Lines of Context:
768
768
            yield cur_path
769
769
        # all done.
770
770
 
 
771
    @deprecated_method(deprecated_in((2, 5, 0)))
771
772
    def _get_inventory(self):
772
773
        return self._inventory
773
774
 
781
782
            file_id = file_id[0]
782
783
        return self.inventory, file_id
783
784
 
 
785
    def _get_root_inventory(self):
 
786
        return self._inventory
 
787
 
 
788
    root_inventory = property(_get_root_inventory,
 
789
        doc="Root inventory of this tree")
 
790
 
 
791
    def _unpack_file_id(self, file_id):
 
792
        """Find the inventory and inventory file id for a tree file id.
 
793
 
 
794
        :param file_id: The tree file id, as bytestring or tuple
 
795
        :return: Inventory and inventory file id
 
796
        """
 
797
        if isinstance(file_id, tuple):
 
798
            if len(file_id) != 0:
 
799
                raise ValueError("nested trees not yet supported: %r" % file_id)
 
800
            file_id = file_id[0]
 
801
        return self.root_inventory, file_id
 
802
 
784
803
    @needs_read_lock
785
804
    def path2id(self, path):
786
805
        """Return the id for path in this tree."""
787
806
        return self._path2inv_file_id(path)[1]
788
807
 
789
808
    def _path2inv_file_id(self, path):
790
 
        # for now
791
 
        return self.inventory, self._inventory.path2id(path)
 
809
        """Lookup a inventory and inventory file id by path.
 
810
 
 
811
        :param path: Path to look up
 
812
        :return: tuple with inventory and inventory file id
 
813
        """
 
814
        # FIXME: Support nested trees
 
815
        return self.root_inventory, self.root_inventory.path2id(path)
792
816
 
793
817
    def id2path(self, file_id):
794
818
        """Return the path for a file id.
807
831
        return inventory.has_id(file_id)
808
832
 
809
833
    def all_file_ids(self):
810
 
        return set(self.inventory) # for now
 
834
        return set(
 
835
            [entry.file_id for path, entry in self.iter_entries_by_dir()])
811
836
 
812
837
    @deprecated_method(deprecated_in((2, 4, 0)))
813
838
    def __iter__(self):
814
 
        return iter(self.inventory) # for now
 
839
        return iter(self.all_file_ids())
815
840
 
816
841
    def filter_unversioned_files(self, paths):
817
842
        """Filter out paths that are versioned.
821
846
        # NB: we specifically *don't* call self.has_filename, because for
822
847
        # WorkingTrees that can indicate files that exist on disk but that
823
848
        # are not versioned.
824
 
        pred = self.inventory.has_filename # for now
825
 
        return set((p for p in paths if not pred(p)))
 
849
        return set((p for p in paths if self.path2id(p) is not None))
826
850
 
827
851
    @needs_read_lock
828
852
    def iter_entries_by_dir(self, specific_file_ids=None, yield_parents=False):
843
867
            inventory_file_ids = []
844
868
            for tree_file_id in specific_file_ids:
845
869
                inventory, inv_file_id = self._unpack_file_id(tree_file_id)
846
 
                if not inventory is self.inventory: # for now
847
 
                    raise AssertionError("%r != %r" % (inventory, self.inventory))
 
870
                if not inventory is self.root_inventory: # for now
 
871
                    raise AssertionError("%r != %r" % (
 
872
                        inventory, self.root_inventory))
848
873
                inventory_file_ids.append(inv_file_id)
849
 
        return self.inventory.iter_entries_by_dir(
 
874
        # FIXME: Support nested trees
 
875
        return self.root_inventory.iter_entries_by_dir(
850
876
            specific_file_ids=inventory_file_ids, yield_parents=yield_parents)
851
877
 
852
878
    @deprecated_method(deprecated_in((2, 5, 0)))