1713
1713
if self._transform.final_file_id(trans_id) is None:
1714
1714
yield self._final_paths._determine_path(trans_id)
1716
def _make_inv_entries(self, ordered_entries, specific_file_ids):
1716
def _make_inv_entries(self, ordered_entries, specific_file_ids=None):
1717
1717
for trans_id, parent_file_id in ordered_entries:
1718
1718
file_id = self._transform.final_file_id(trans_id)
1719
1719
if file_id is None:
1756
1756
specific_file_ids):
1757
1757
yield unicode(self._final_paths.get_path(trans_id)), entry
1759
def list_files(self, include_root=False):
1760
"""See Tree.list_files."""
1759
def _iter_entries_for_dir(self, dir_path):
1760
"""Return path, entry for items in a directory without recursing down."""
1761
dir_file_id = self.path2id(dir_path)
1763
for file_id in self.iter_children(dir_file_id):
1764
trans_id = self._transform.trans_id_file_id(file_id)
1765
ordered_ids.append((trans_id, file_id))
1766
for entry, trans_id in self._make_inv_entries(ordered_ids):
1767
yield unicode(self._final_paths.get_path(trans_id)), entry
1769
def list_files(self, include_root=False, from_dir=None, recursive=True):
1770
"""See WorkingTree.list_files."""
1761
1771
# XXX This should behave like WorkingTree.list_files, but is really
1762
1772
# more like RevisionTree.list_files.
1763
for path, entry in self.iter_entries_by_dir():
1764
if entry.name == '' and not include_root:
1766
yield path, 'V', entry.kind, entry.file_id, entry
1776
prefix = from_dir + '/'
1777
entries = self.iter_entries_by_dir()
1778
for path, entry in entries:
1779
if entry.name == '' and not include_root:
1782
if not path.startswith(prefix):
1784
path = path[len(prefix):]
1785
yield path, 'V', entry.kind, entry.file_id, entry
1787
if from_dir is None and include_root is True:
1788
root_entry = inventory.make_entry('directory', '',
1789
ROOT_PARENT, self.get_root_id())
1790
yield '', 'V', 'directory', root_entry.file_id, root_entry
1791
entries = self._iter_entries_for_dir(from_dir or '')
1792
for path, entry in entries:
1793
yield path, 'V', entry.kind, entry.file_id, entry
1768
1795
def kind(self, file_id):
1769
1796
trans_id = self._transform.trans_id_file_id(file_id)