def __init__(self, repo_path, autocommit=True): self.eg = EasyGit.open_repo(repo_path) features = FeatureBlob(self.eg.root['features']) assert features.get('inode_format', None) == 'treetree' assert features.get('inode_index_format', None) == 'treetree' self.autocommit = autocommit log.debug('Loaded storage, autocommit=%r, HEAD=%r', autocommit, self.eg.get_head_id()) self._inode_cache = {} self._inodes_tt = TreeTree(self.eg.root['inodes'], prefix='it')
def convert_fs_to_treetree_inode_index(eg): """ Convert a filesystem from the "inode index as as flat list" format to the "inode index as treetree" format. """ inode_index_raw = eg.root['inodes'] inode_index_tt = TreeTree(inode_index_raw, prefix='it') all_inode_names = list(inode_index_raw.keys()) largest_number = -1 for inode_name in all_inode_names: upgrade_log.debug('Moving inode %r to treetree', inode_name) inode_index_tt.clone(inode_index_raw[inode_name], inode_name[1:]) del inode_index_raw[inode_name] number = int(inode_name[1:]) largest_number = max(largest_number, number) FeatureBlob(eg.root['features'])['next_inode_number'] = largest_number + 1
def __init__(self, name, tree, storage): self.name = name self.tree = tree self.storage = storage self.tt = TreeTree(tree, prefix='bt') log.debug('Loaded inode %r', name)