/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to workingtree.py

Move working tree inventory code to inventory.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
    )
47
47
 
48
48
 
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)
54
 
        if file_id is None:
55
 
            if dirname == "":
56
 
                parent_fid = None
57
 
            else:
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
62
 
            file_id = ie.file_id
63
 
        return file_id
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)
71
 
        else:
72
 
            file_id = old_file_id
73
 
        if stat.S_ISLNK(mode):
74
 
            kind = 'symlink'
75
 
        else:
76
 
            assert stat.S_ISREG(mode)
77
 
            kind = 'file'
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
81
 
 
82
 
    return inv
 
49
from bzrlib.plugins.git.inventory import (
 
50
    GitIndexInventory,
 
51
    )
83
52
 
84
53
 
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)
168
137
 
169
138
    @needs_read_lock