786
787
file_id = self._tree.inventory.root.file_id
788
789
file_id = self.tree_file_id(trans_id)
790
elif trans_id in self._new_name or trans_id in self._new_parent:
791
file_id = self.tree_file_id(trans_id)
792
if file_id is not None:
793
limbo_inv[trans_id] = inv[file_id]
794
inv.remove_recursive_id(file_id)
790
assert file_id is not None
791
self.__inventory_delta.append((path, None, file_id,
796
794
child_pb.finished()
830
829
kind = file_kind(self._tree.abspath(path))
831
830
if trans_id in self._new_reference_revision:
832
entry = inventory.TreeReference(self._new_id[trans_id],
831
new_entry = inventory.TreeReference(
832
self._new_id[trans_id],
833
833
self._new_name[trans_id],
834
834
self.final_file_id(self._new_parent[trans_id]),
835
835
None, self._new_reference_revision[trans_id])
838
inv.add_path(path, kind, self._new_id[trans_id])
839
elif trans_id in self._new_name or trans_id in\
841
entry = limbo_inv.get(trans_id)
842
if entry is not None:
843
entry.name = self.final_name(trans_id)
844
parent_path = os.path.dirname(path)
846
self._tree.inventory.path2id(parent_path)
849
# requires files and inventory entries to be in place
837
new_entry = inventory.make_entry(kind,
838
self.final_name(trans_id),
839
self.final_file_id(self.final_parent(trans_id)),
840
self._new_id[trans_id])
842
if trans_id in self._new_name or trans_id in\
844
trans_id in self._new_executability:
845
file_id = self.final_file_id(trans_id)
846
if file_id is not None:
848
new_entry = entry.copy()
850
if trans_id in self._new_name or trans_id in\
852
if new_entry is not None:
853
new_entry.name = self.final_name(trans_id)
854
parent = self.final_parent(trans_id)
855
parent_id = self.final_file_id(parent)
856
new_entry.parent_id = parent_id
850
858
if trans_id in self._new_executability:
851
self._set_executability(path, inv, trans_id)
859
self._set_executability(path, new_entry, trans_id)
860
if new_entry is not None:
861
if new_entry.file_id in inv:
862
old_path = inv.id2path(new_entry.file_id)
865
self.__inventory_delta.append((old_path, path,
853
869
child_pb.finished()
854
870
return modified_paths
856
def _set_executability(self, path, inv, trans_id):
872
def _set_executability(self, path, entry, trans_id):
857
873
"""Set the executability of versioned files """
858
file_id = inv.path2id(path)
859
874
new_executability = self._new_executability[trans_id]
860
inv[file_id].executable = new_executability
875
entry.executable = new_executability
861
876
if supports_executable():
862
877
abspath = self._tree.abspath(path)
863
878
current_mode = os.stat(abspath).st_mode