355
355
mode = os.stat(self._tree.abspath(old_path)).st_mode
356
356
except OSError, e:
357
if e.errno == errno.ENOENT:
357
if e.errno in (errno.ENOENT, errno.ENOTDIR):
358
# Either old_path doesn't exist, or the parent of the
359
# target is not a directory (but will be one eventually)
360
# Either way, we know it doesn't exist *right now*
361
# See also bug #248448
1406
1410
self._transform = transform
1407
1411
self._final_paths = FinalPaths(transform)
1408
1412
self.__by_parent = None
1413
self._parent_ids = []
1410
1415
def _changes(self, file_id):
1411
1416
for changes in self._transform.iter_changes():
1419
1424
# InterTree.iter_changes.
1420
1425
return (changes is not None and changes[2])
1427
def _get_repository(self):
1428
repo = getattr(self._transform._tree, '_repository', None)
1430
repo = self._transform._tree.branch.repository
1433
def _iter_parent_trees(self):
1434
for revision_id in self.get_parent_ids():
1436
yield self.revision_tree(revision_id)
1437
except errors.NoSuchRevisionInTree:
1438
yield self._get_repository().revision_tree(revision_id)
1422
1440
def _get_file_revision(self, file_id, vf, tree_revision):
1423
return self._transform._tree._get_file_revision(file_id, vf,
1441
parent_keys = [(file_id, self._file_revision(t, file_id)) for t in
1442
self._iter_parent_trees()]
1443
vf.add_lines((file_id, tree_revision), parent_keys,
1444
self.get_file(file_id).readlines())
1445
repo = self._get_repository()
1446
base_vf = repo.texts
1447
if base_vf not in vf.fallback_versionedfiles:
1448
vf.fallback_versionedfiles.append(base_vf)
1449
return tree_revision
1426
1451
def _stat_limbo_file(self, file_id):
1427
1452
trans_id = self._transform.trans_id_file_id(file_id)
1678
1703
return self._transform._tree.walkdirs(prefix)
1680
1705
def get_parent_ids(self):
1681
return self._transform._tree.get_parent_ids()
1706
return self._parent_ids
1708
def set_parent_ids(self, parent_ids):
1709
self._parent_ids = parent_ids
1683
1711
def get_revision_tree(self, revision_id):
1684
1712
return self._transform._tree.get_revision_tree(revision_id)