Exemple #1
0
 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')
Exemple #2
0
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
Exemple #3
0
 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)