/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/transform.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-08-29 01:03:34 UTC
  • mfrom: (3363.9.12 walkdirs)
  • Revision ID: pqm@pqm.ubuntu.com-20080829010334-5rll9kw98912mbxd
Fix PreviewTree implementation of walkdirs

Show diffs side-by-side

added added

removed removed

Lines of Context:
1734
1734
    def list_files(self, include_root=False):
1735
1735
        return self._transform._tree.list_files(include_root)
1736
1736
 
1737
 
    def walkdirs(self, prefix=""):
1738
 
        return self._transform._tree.walkdirs(prefix)
 
1737
    def walkdirs(self, prefix=''):
 
1738
        pending = [self._transform.root]
 
1739
        while len(pending) > 0:
 
1740
            parent_id = pending.pop()
 
1741
            children = []
 
1742
            subdirs = []
 
1743
            prefix = prefix.rstrip('/')
 
1744
            parent_path = self._final_paths.get_path(parent_id)
 
1745
            parent_file_id = self._transform.final_file_id(parent_id)
 
1746
            for child_id in self._all_children(parent_id):
 
1747
                path_from_root = self._final_paths.get_path(child_id)
 
1748
                basename = self._transform.final_name(child_id)
 
1749
                file_id = self._transform.final_file_id(child_id)
 
1750
                try:
 
1751
                    kind = self._transform.final_kind(child_id)
 
1752
                    versioned_kind = kind
 
1753
                except NoSuchFile:
 
1754
                    kind = 'unknown'
 
1755
                    versioned_kind = self._transform._tree.stored_kind(file_id)
 
1756
                if versioned_kind == 'directory':
 
1757
                    subdirs.append(child_id)
 
1758
                children.append((path_from_root, basename, kind, None,
 
1759
                                 file_id, versioned_kind))
 
1760
            children.sort()
 
1761
            if parent_path.startswith(prefix):
 
1762
                yield (parent_path, parent_file_id), children
 
1763
            pending.extend(sorted(subdirs, key=self._final_paths.get_path,
 
1764
                                  reverse=True))
1739
1765
 
1740
1766
    def get_parent_ids(self):
1741
1767
        return self._parent_ids