892
891
child_pb.update('Apply phase', 0, 2)
893
892
self._apply_removals(inventory_delta, mover)
894
893
child_pb.update('Apply phase', 1, 2)
895
modified_paths = self._apply_insertions(inv, inventory_delta,
894
modified_paths = self._apply_insertions(inventory_delta, mover)
988
986
child_pb.finished()
990
def _apply_insertions(self, inv, inventory_delta, mover):
988
def _apply_insertions(self, inventory_delta, mover):
991
989
"""Perform tree operations that insert directory/inventory names.
993
991
That is, create any files that need to be created, and restore from
1002
1000
for num, (path, trans_id) in enumerate(new_paths):
1003
1001
new_entry = None
1004
1002
child_pb.update('adding file', num, len(new_paths))
1006
kind = self._new_contents[trans_id]
1008
kind = contents = None
1009
1003
if trans_id in self._new_contents or \
1010
1004
self.path_changed(trans_id):
1011
1005
full_path = self._tree.abspath(path)
1021
1015
if trans_id in self._new_contents:
1022
1016
modified_paths.append(full_path)
1023
1017
completed_new.append(trans_id)
1025
if trans_id in self._new_id:
1027
kind = file_kind(self._tree.abspath(path))
1018
file_id = self.final_file_id(trans_id)
1019
if file_id is not None and (trans_id in self._new_id or
1020
trans_id in self._new_name or trans_id in self._new_parent
1021
or trans_id in self._new_executability):
1023
kind = self.final_kind(trans_id)
1025
kind = self._tree.stored_kind(file_id)
1028
1026
if trans_id in self._new_reference_revision:
1029
1027
new_entry = inventory.TreeReference(
1030
self._new_id[trans_id],
1028
self.final_file_id(trans_id),
1031
1029
self._new_name[trans_id],
1032
1030
self.final_file_id(self._new_parent[trans_id]),
1033
1031
None, self._new_reference_revision[trans_id])
1035
1033
new_entry = inventory.make_entry(kind,
1036
1034
self.final_name(trans_id),
1037
1035
self.final_file_id(self.final_parent(trans_id)),
1038
self._new_id[trans_id])
1040
if trans_id in self._new_name or trans_id in\
1041
self._new_parent or\
1042
trans_id in self._new_executability:
1043
file_id = self.final_file_id(trans_id)
1044
if file_id is not None:
1045
entry = inv[file_id]
1046
new_entry = entry.copy()
1048
if trans_id in self._new_name or trans_id in\
1050
if new_entry is not None:
1051
new_entry.name = self.final_name(trans_id)
1052
parent = self.final_parent(trans_id)
1053
parent_id = self.final_file_id(parent)
1054
new_entry.parent_id = parent_id
1036
self.final_file_id(trans_id))
1038
old_path = self._tree.id2path(new_entry.file_id)
1039
except errors.NoSuchId:
1041
inventory_delta.append((old_path, path, new_entry.file_id,
1056
1044
if trans_id in self._new_executability:
1057
1045
self._set_executability(path, new_entry, trans_id)
1058
if new_entry is not None:
1059
if new_entry.file_id in inv:
1060
old_path = inv.id2path(new_entry.file_id)
1063
inventory_delta.append((old_path, path,
1067
1047
child_pb.finished()
1068
1048
for trans_id in completed_new: