49
def inventory_from_index(basis_inventory, mapping, index):
50
inv = inventory.Inventory(root_id=None)
51
def add_parents(path):
52
dirname, _ = osutils.split(path)
53
file_id = inv.path2id(dirname)
58
parent_fid = add_parents(dirname)
59
ie = inv.add_path(dirname, 'directory', mapping.generate_file_id(dirname), parent_fid)
60
if ie.file_id in basis_inventory:
61
ie.revision = basis_inventory[ie.file_id].revision
64
for path, value in index.iteritems():
65
assert isinstance(path, str)
66
assert isinstance(value, tuple) and len(value) == 10
67
(ctime, mtime, ino, dev, mode, uid, gid, size, sha, flags) = value
68
old_file_id = basis_inventory.path2id(path)
69
if old_file_id is None:
70
file_id = mapping.generate_file_id(path)
73
if stat.S_ISLNK(mode):
76
assert stat.S_ISREG(mode)
78
ie = inv.add_path(path, kind, file_id, add_parents(path))
79
if old_file_id is not None:
80
ie.revision = basis_inventory[old_file_id].revision
49
from bzrlib.plugins.git.inventory import (
85
54
class GitWorkingTree(workingtree.WorkingTree):
163
132
def _reset_data(self):
164
133
self._inventory_is_modified = False
165
134
basis_inv = self.repository.get_inventory(self.mapping.revision_id_foreign_to_bzr(self.repository._git.head()))
166
result = inventory_from_index(basis_inv, self.mapping, self.index)
135
result = GitIndexInventory(basis_inv, self.mapping, self.index)
167
136
self._set_inventory(result, dirty=False)