def _walk_tree(self, e_factory, base_rev=None, pass_root=0, callback=None): if base_rev is None: # a specific base rev was not provided. use the transaction base, # or the previous revision if self.txn_ptr: base_rev = fs.txn_base_revision(self.txn_ptr) else: base_rev = self.rev - 1 # get the current root if self.txn_ptr: root = fs.txn_root(self.txn_ptr) else: root = fs.revision_root(self.fs_ptr, self.rev) # the base of the comparison base_root = fs.revision_root(self.fs_ptr, base_rev) if callback == None: callback = lambda msg: None if pass_root: editor = e_factory(root, base_root, callback) else: editor = e_factory(callback=callback) # construct the editor for printing these things out e_ptr, e_baton = delta.make_editor(editor) # compute the delta, printing as we go def authz_cb(root, path, pool): return 1 repos.dir_delta(base_root, '', '', root, '', e_ptr, e_baton, authz_cb, 0, 1, 0, 0)
def __init__(self, fs_ptr, root, pool=None, notify_cb=None): """Construct a walker over the svn_fs_root_t ROOT, which must be in the svn_fs_t FS_PTR. Invoke NOTIFY_CB with a single argument of type ChangedPath for each change under ROOT. At this time, two ChangedPath objects will be passed for a path that had been replaced in the revision/transaction. This may change in the future. ### Can't we deduce FS_PTR from ROOT? ### POOL is unused """ self.fs_ptr = fs_ptr self.changes = { } # path -> ChangedPathEntry() self.roots = { } # revision -> svn_svnfs_root_t self.notify_cb = notify_cb self.props = { } self.fs_root = root # Figger out the base revision and root properties. if _svnfs.is_revision_root(self.fs_root): rev = _svnfs.revision_root_revision(self.fs_root) self.base_rev = rev - 1 self.props = _svnfs.revision_proplist(self.fs_ptr, rev) else: txn_name = _svnfs.txn_root_name(self.fs_root) txn_t = _svnfs.open_txn(self.fs_ptr, txn_name) self.base_rev = _svnfs.txn_base_revision(txn_t) self.props = _svnfs.txn_proplist(txn_t)
def _print_tree(self, e_factory, base_rev=None, pass_root=0): if base_rev is None: # a specific base rev was not provided. use the transaction base, # or the previous revision if self.txn_ptr: base_rev = fs.txn_base_revision(self.txn_ptr) else: base_rev = self.rev - 1 # get the current root if self.txn_ptr: root = fs.txn_root(self.txn_ptr) else: root = fs.revision_root(self.fs_ptr, self.rev) # the base of the comparison base_root = fs.revision_root(self.fs_ptr, base_rev) if pass_root: editor = e_factory(root, base_root) else: editor = e_factory() # construct the editor for printing these things out e_ptr, e_baton = delta.make_editor(editor) # compute the delta, printing as we go def authz_cb(root, path, pool): return 1 repos.dir_delta(base_root, '', '', root, '', e_ptr, e_baton, authz_cb, 0, 1, 0, 0)
def _print_tree(self, e_factory, rootpath='', base_rev=None, pass_root=0): # It no longer prints, it returns the editor made by e_factory which # contains the tree in a list. if base_rev is None: # a specific base rev was not provided. use the transaction base, # or the previous revision if self.txn_ptr: base_rev = fs.txn_base_revision(self.txn_ptr) else: base_rev = self.rev - 1 # get the current root if self.txn_ptr: root = fs.txn_root(self.txn_ptr, self.pool) else: root = fs.revision_root(self.fs_ptr, self.rev, self.pool) # the base of the comparison base_root = fs.revision_root(self.fs_ptr, base_rev, self.pool) if pass_root: editor = e_factory(root, base_root) else: editor = e_factory() # construct the editor for printing these things out e_ptr, e_baton = delta.make_editor(editor, self.pool) # compute the delta, printing as we go def authz_cb(root, path, pool): return 1 repos.dir_delta(base_root, '', '', root, rootpath.encode('utf-8'), e_ptr, e_baton, authz_cb, 0, 1, 0, 0, self.pool) return editor
def check_po(pool, repos_path, txn): def authz_cb(root, path, pool): return 1 fs_ptr = repos.fs(repos.open(repos_path, pool)) txn_ptr = fs.open_txn(fs_ptr, txn, pool) txn_root = fs.txn_root(txn_ptr, pool) base_root = fs.revision_root(fs_ptr, fs.txn_base_revision(txn_ptr), pool) editor = ChangeReceiver(txn_root, base_root, pool) e_ptr, e_baton = delta.make_editor(editor, pool) repos.dir_delta(base_root, "", "", txn_root, "", e_ptr, e_baton, authz_cb, 0, 1, 0, 0, pool)
def check_po(pool, repos_path, txn): def authz_cb(root, path, pool): return 1 fs_ptr = repos.fs(repos.open(repos_path, pool)) txn_ptr = fs.open_txn(fs_ptr, txn, pool) txn_root = fs.txn_root(txn_ptr, pool) base_root = fs.revision_root(fs_ptr, fs.txn_base_revision(txn_ptr), pool) editor = ChangeReceiver(txn_root, base_root, pool) e_ptr, e_baton = delta.make_editor(editor, pool) repos.dir_delta(base_root, '', '', txn_root, '', e_ptr, e_baton, authz_cb, 0, 1, 0, 0, pool)
def __init__(self, fs_ptr, root, pool=None, notify_cb=None): self.fs_ptr = fs_ptr self.changes = { } # path -> ChangedPathEntry() self.roots = { } # revision -> svn_svnfs_root_t self.notify_cb = notify_cb self.props = { } self.fs_root = root # Figger out the base revision and root properties. if _svnfs.is_revision_root(self.fs_root): rev = _svnfs.revision_root_revision(self.fs_root) self.base_rev = rev - 1 self.props = _svnfs.revision_proplist(self.fs_ptr, rev) else: txn_name = _svnfs.txn_root_name(self.fs_root) txn_t = _svnfs.open_txn(self.fs_ptr, txn_name) self.base_rev = _svnfs.txn_base_revision(txn_t) self.props = _svnfs.txn_proplist(txn_t)
def __init__(self, fs_ptr, root, pool=None, notify_cb=None): self.fs_ptr = fs_ptr self.changes = { } # path -> ChangedPathEntry() self.roots = { } # revision -> svn_fs_root_t self.notify_cb = notify_cb self.props = { } self.fs_root = root # Figger out the base revision and root properties. if _fs.is_revision_root(self.fs_root): rev = _fs.revision_root_revision(self.fs_root) self.base_rev = rev - 1 self.props = _fs.revision_proplist(self.fs_ptr, rev) else: txn_name = _fs.txn_root_name(self.fs_root) txn_t = _fs.open_txn(self.fs_ptr, txn_name) self.base_rev = _fs.txn_base_revision(txn_t) self.props = _fs.txn_proplist(txn_t)
def __init__(self, path, rev, txn): self.repo_root_path = core.svn_path_canonicalize(path) root_ptr = repos.open(self.repo_root_path) self.fs_ptr = repos.fs(root_ptr) # Set the revision/transaction if txn: self.txn_ptr = fs.open_txn(self.fs_ptr, txn) else: self.txn_ptr = None if rev is None: rev = fs.youngest_rev(self.fs_ptr) self.rev = rev # Set the root if self.txn_ptr: self.root = fs.txn_root(self.txn_ptr) else: self.root = fs.revision_root(self.fs_ptr, self.rev) # Set the base revision/transaction if self.txn_ptr: self.base_rev = fs.txn_base_revision(self.txn_ptr) else: self.base_rev = self.rev - 1 # Set the base root of the comparison self.base_root = fs.revision_root(self.fs_ptr, self.base_rev) # Get all the changes and sort by path editor = repos.ChangeCollector(self.fs_ptr, self.root) e_ptr, e_baton = delta.make_editor(editor) repos.replay(self.root, e_ptr, e_baton) self.changelist = editor.get_changes().items() self.changelist.sort()