Index: contrib/hook-scripts/pre-lock-require-needs-lock.py =================================================================== --- contrib/hook-scripts/pre-lock-require-needs-lock.py (revision 16222) +++ contrib/hook-scripts/pre-lock-require-needs-lock.py (working copy) @@ -5,12 +5,12 @@ import os.path from svn import repos, fs, core -def main(pool, repos_dir, path): +def main(repos_dir, path): # Construct a ChangeCollector to fetch our changes. - fs_ptr = repos.svn_repos_fs(repos.svn_repos_open(repos_dir, pool)) - youngest_rev = fs.svn_fs_youngest_rev(fs_ptr, pool) - root = fs.svn_fs_revision_root(fs_ptr, youngest_rev, pool) - if not fs.svn_fs_node_prop(root, path, core.SVN_PROP_NEEDS_LOCK, pool): + fs_ptr = repos.svn_repos_fs(repos.svn_repos_open(repos_dir)) + youngest_rev = fs.svn_fs_youngest_rev(fs_ptr) + root = fs.svn_fs_revision_root(fs_ptr, youngest_rev) + if not fs.svn_fs_node_prop(root, path, core.SVN_PROP_NEEDS_LOCK): sys.stderr.write( """Locking of path '%s' prohibited by repository policy (must have %s property set) @@ -33,5 +33,5 @@ if __name__ == '__main__': if len(sys.argv) < 3: _usage_and_exit() - sys.exit(core.run_app(main, sys.argv[1], sys.argv[2])) + sys.exit(main(sys.argv[1], sys.argv[2])) Index: contrib/hook-scripts/check-case-insensitive.py =================================================================== --- contrib/hook-scripts/check-case-insensitive.py (revision 16222) +++ contrib/hook-scripts/check-case-insensitive.py (working copy) @@ -71,18 +71,16 @@ # This is stolen from the svnlook.py example. All that is not needed has been # stripped out and it returns data rather than printing it. class SVNLook: - def __init__(self, pool, path, cmd, rev, txn): - self.pool = pool - - repos_ptr = repos.open(path, pool) + def __init__(self, path, cmd, rev, txn): + repos_ptr = repos.open(path) self.fs_ptr = repos.fs(repos_ptr) if txn: - self.txn_ptr = fs.open_txn(self.fs_ptr, txn, pool) + 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, pool) + rev = fs.youngest_rev(self.fs_ptr) self.rev = rev def cmd_changed(self): @@ -104,12 +102,12 @@ # get the current root if self.txn_ptr: - root = fs.txn_root(self.txn_ptr, self.pool) + root = fs.txn_root(self.txn_ptr) else: - root = fs.revision_root(self.fs_ptr, self.rev, self.pool) + root = fs.revision_root(self.fs_ptr, self.rev) # the base of the comparison - base_root = fs.revision_root(self.fs_ptr, base_rev, self.pool) + base_root = fs.revision_root(self.fs_ptr, base_rev) if pass_root: editor = e_factory(root, base_root) @@ -117,13 +115,13 @@ editor = e_factory() # construct the editor for printing these things out - e_ptr, e_baton = delta.make_editor(editor, self.pool) + 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, rootpath.encode('utf-8'), - e_ptr, e_baton, authz_cb, 0, 1, 0, 0, self.pool) + e_ptr, e_baton, authz_cb, 0, 1, 0, 0) return editor class ChangedEditor(delta.Editor): @@ -139,7 +137,7 @@ def delete_entry(self, path, revision, parent_baton, pool): ### need more logic to detect 'replace' - if fs.is_dir(self.base_root, '/' + path, pool): + if fs.is_dir(self.base_root, '/' + path): self.deleted.append(path.decode('utf-8') + u'/') else: self.deleted.append(path.decode('utf-8')) @@ -203,20 +201,19 @@ # we cheat. one method implementation for two entry points. open_file = add_file - def _get_id(self, path, pool): + def _get_id(self, path): if self.root: - id = fs.node_id(self.root, path, pool) - return ' <%s>' % fs.unparse_id(id, pool) + id = fs.node_id(self.root, path) + return ' <%s>' % fs.unparse_id(id) return '' class CheckCase: """Check for case conflicts""" - def __init__(self, pool, path, txn): - self.pool = pool; - repos_ptr = repos.open(path, pool) + def __init__(self, path, txn): + repos_ptr = repos.open(path) self.fs_ptr = repos.fs(repos_ptr) - self.look = SVNLook(self.pool, path, 'changed', None, txn) + self.look = SVNLook(path, 'changed', None, txn) # Get the list of files and directories which have been added. changed = self.look.cmd_changed() @@ -302,5 +299,5 @@ % (os.path.basename(sys.argv[0]))) sys.exit(1) - core.run_app(CheckCase, os.path.normpath(sys.argv[1]), sys.argv[2]) + CheckCase(os.path.normpath(sys.argv[1]), sys.argv[2]) sys.exit(exitstat) Index: contrib/hook-scripts/pre-commit-check.py =================================================================== --- contrib/hook-scripts/pre-commit-check.py (revision 16222) +++ contrib/hook-scripts/pre-commit-check.py (working copy) @@ -48,11 +48,11 @@ return 1 -def main(pool, repos_dir, txn): +def main(repos_dir, txn): # Construct a ChangeCollector to fetch our changes. - fs_ptr = repos.svn_repos_fs(repos.svn_repos_open(repos_dir, pool)) - root = fs.txn_root(fs.open_txn(fs_ptr, txn, pool), pool) - cc = repos.ChangeCollector(fs_ptr, root, pool) + fs_ptr = repos.svn_repos_fs(repos.svn_repos_open(repos_dir)) + root = fs.txn_root(fs.open_txn(fs_ptr, txn)) + cc = repos.ChangeCollector(fs_ptr, root) # Call the transaction property validator. Might as well get the # cheap checks outta the way first. @@ -61,8 +61,8 @@ return retval # Generate the path-based changes list. - e_ptr, e_baton = delta.make_editor(cc, pool) - repos.svn_repos_replay(root, e_ptr, e_baton, pool) + e_ptr, e_baton = delta.make_editor(cc) + repos.svn_repos_replay(root, e_ptr, e_baton) # Call the path change validator. changes = cc.get_changes() @@ -85,5 +85,5 @@ if __name__ == '__main__': if len(sys.argv) < 3: _usage_and_exit() - sys.exit(core.run_app(main, sys.argv[1], sys.argv[2])) + sys.exit(main(sys.argv[1], sys.argv[2])) Index: contrib/server-side/svn-obliterate.py =================================================================== --- contrib/server-side/svn-obliterate.py (revision 16222) +++ contrib/server-side/svn-obliterate.py (working copy) @@ -142,14 +142,14 @@ return prev_id, is_dir -def get_node_id(pool, repos_path, path, revision): +def get_node_id(repos_path, path, revision): # Open the repository and filesystem. - repos_ptr = repos.open(repos_path, pool) + repos_ptr = repos.open(repos_path) fs_ptr = repos.fs(repos_ptr) # Fetch the node revision ID of interest - rev_root = fs.revision_root(fs_ptr, int(revision), pool) - return fs.unparse_id(fs.node_id(rev_root, path, pool), pool) + rev_root = fs.revision_root(fs_ptr, int(revision)) + return fs.unparse_id(fs.node_id(rev_root, path)) def append_successors(nodes, node_id, affected_nodes): @@ -182,7 +182,7 @@ (path, revision)) sys.stdout.write('-- Determining node revision ID... ') sys.stdout.flush() - node_id = core.run_app(get_node_id, repos_path, path, revision) + node_id = get_node_id(repos_path, path, revision) sys.stdout.write('done. [%s]\n' % node_id) # Scan the nodes table, parsing skels and building a node tree. Index: tools/hook-scripts/verify-po.py =================================================================== --- tools/hook-scripts/verify-po.py (revision 16222) +++ tools/hook-scripts/verify-po.py (working copy) @@ -47,7 +47,6 @@ def __init__(self, txn_root, base_root, pool): self.txn_root = txn_root self.base_root = base_root - self.pool = pool def add_file(self, path, parent_baton, copyfrom_path, copyfrom_revision, file_pool): @@ -67,41 +66,36 @@ # This is not a .po file, or it hasn't changed return + # Read the file contents through a validating UTF-8 decoder + checker = MsgFmtChecker() try: - # Read the file contents through a validating UTF-8 decoder - subpool = core.svn_pool_create(self.pool) - checker = MsgFmtChecker() - try: - stream = core.Stream(fs.file_contents(self.txn_root, path, subpool)) - reader = codecs.getreader('UTF-8')(stream, 'strict') - writer = codecs.getwriter('UTF-8')(checker, 'strict') - while 1: - data = reader.read(core.SVN_STREAM_CHUNK_SIZE) - if not data: - break - writer.write(data) - if not checker.close(): - sys.exit("PO format check failed for '" + path + "'") - except UnicodeError: - sys.exit("PO file is not in UTF-8: '" + path + "'") - finally: - core.svn_pool_destroy(subpool) + stream = core.Stream(fs.file_contents(self.txn_root, path)) + reader = codecs.getreader('UTF-8')(stream, 'strict') + writer = codecs.getwriter('UTF-8')(checker, 'strict') + while 1: + data = reader.read(core.SVN_STREAM_CHUNK_SIZE) + if not data: + break + writer.write(data) + if not checker.close(): + sys.exit("PO format check failed for '" + path + "'") + except UnicodeError: + sys.exit("PO file is not in UTF-8: '" + path + "'") - -def check_po(pool, repos_path, txn): +def check_po(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) + fs_ptr = repos.fs(repos.open(repos_path)) + txn_ptr = fs.open_txn(fs_ptr, txn) + txn_root = fs.txn_root(txn_ptr) + base_root = fs.revision_root(fs_ptr, fs.txn_base_revision(txn_ptr)) + editor = ChangeReceiver(txn_root, base_root) + e_ptr, e_baton = delta.make_editor(editor) repos.dir_delta(base_root, '', '', txn_root, '', - e_ptr, e_baton, authz_cb, 0, 1, 0, 0, pool) + e_ptr, e_baton, authz_cb, 0, 1, 0, 0) if __name__ == '__main__': assert len(sys.argv) == 3 - core.run_app(check_po, sys.argv[1], sys.argv[2]) + check_po(sys.argv[1], sys.argv[2]) Index: tools/hook-scripts/mailer/mailer.py =================================================================== --- tools/hook-scripts/mailer/mailer.py (revision 16222) +++ tools/hook-scripts/mailer/mailer.py (working copy) @@ -46,29 +46,29 @@ SEPARATOR = '=' * 78 -def main(pool, cmd, config_fname, repos_dir, cmd_args): +def main(cmd, config_fname, repos_dir, cmd_args): ### TODO: Sanity check the incoming args if cmd == 'commit': revision = int(cmd_args[0]) - repos = Repository(repos_dir, revision, pool) + repos = Repository(repos_dir, revision) cfg = Config(config_fname, repos, { 'author' : repos.author }) - messenger = Commit(pool, cfg, repos) + messenger = Commit(cfg, repos) elif cmd == 'propchange' or cmd == 'propchange2': revision = int(cmd_args[0]) author = cmd_args[1] propname = cmd_args[2] action = (cmd == 'propchange2' and cmd_args[3] or 'A') - repos = Repository(repos_dir, revision, pool) + repos = Repository(repos_dir, revision) # Override the repos revision author with the author of the propchange repos.author = author cfg = Config(config_fname, repos, { 'author' : author }) - messenger = PropChange(pool, cfg, repos, author, propname, action) + messenger = PropChange(cfg, repos, author, propname, action) elif cmd == 'lock' or cmd == 'unlock': author = cmd_args[0] - repos = Repository(repos_dir, 0, pool) ### any old revision will do + repos = Repository(repos_dir, 0) ### any old revision will do cfg = Config(config_fname, repos, { 'author' : author }) - messenger = Lock(pool, cfg, repos, author, cmd == 'lock') + messenger = Lock(cfg, repos, author, cmd == 'lock') else: raise UnknownSubcommand(cmd) @@ -276,8 +276,7 @@ class Messenger: - def __init__(self, pool, cfg, repos, prefix_param): - self.pool = pool + def __init__(self, cfg, repos, prefix_param): self.cfg = cfg self.repos = repos @@ -292,13 +291,13 @@ class Commit(Messenger): - def __init__(self, pool, cfg, repos): - Messenger.__init__(self, pool, cfg, repos, 'commit_subject_prefix') + def __init__(self, cfg, repos): + Messenger.__init__(self, cfg, repos, 'commit_subject_prefix') # get all the changes and sort by path - editor = svn.repos.ChangeCollector(repos.fs_ptr, repos.root_this, self.pool) - e_ptr, e_baton = svn.delta.make_editor(editor, self.pool) - svn.repos.replay(repos.root_this, e_ptr, e_baton, self.pool) + editor = svn.repos.ChangeCollector(repos.fs_ptr, repos.root_this) + e_ptr, e_baton = svn.delta.make_editor(editor) + svn.repos.replay(repos.root_this, e_ptr, e_baton) self.changelist = editor.get_changes().items() self.changelist.sort() @@ -351,8 +350,6 @@ ### so if the body doesn't change, then it can be sent N times ### rather than rebuilding it each time. - subpool = svn.core.svn_pool_create(self.pool) - # build a renderer, tied to our output stream renderer = TextCommitRenderer(self.output) @@ -361,14 +358,10 @@ # generate the content for this group and set of params generate_content(renderer, self.cfg, self.repos, self.changelist, - group, params, paths, subpool) + group, params, paths) self.output.finish() - svn.core.svn_pool_clear(subpool) - svn.core.svn_pool_destroy(subpool) - - try: from tempfile import NamedTemporaryFile except ImportError: @@ -387,8 +380,8 @@ class PropChange(Messenger): - def __init__(self, pool, cfg, repos, author, propname, action): - Messenger.__init__(self, pool, cfg, repos, 'propchange_subject_prefix') + def __init__(self, cfg, repos, author, propname, action): + Messenger.__init__(self, cfg, repos, 'propchange_subject_prefix') self.author = author self.propname = propname self.action = action @@ -472,11 +465,11 @@ class Lock(Messenger): - def __init__(self, pool, cfg, repos, author, do_lock): + def __init__(self, cfg, repos, author, do_lock): self.author = author self.do_lock = do_lock - Messenger.__init__(self, pool, cfg, repos, + Messenger.__init__(self, cfg, repos, (do_lock and 'lock_subject_prefix' or 'unlock_subject_prefix')) @@ -511,7 +504,7 @@ # The lock comment is the same for all paths, so we can just pull # the comment for the first path in the dirlist and cache it. self.lock = svn.fs.svn_fs_get_lock(self.repos.fs_ptr, - self.dirlist[0], self.pool) + self.dirlist[0]) def generate(self): for (group, param_tuple), (params, paths) in self.groups.items(): @@ -576,12 +569,11 @@ self.modify = cfg.get('diff_modify_url', group, None) -def generate_content(renderer, cfg, repos, changelist, group, params, paths, - pool): +def generate_content(renderer, cfg, repos, changelist, group, params, paths): svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) ### pick a different date format? - date = time.ctime(svn.core.secs_from_timestr(svndate, pool)) + date = time.ctime(svn.core.secs_from_timestr(svndate)) diffsels = DiffSelections(cfg, group, params) diffurls = DiffURLSelections(cfg, group) @@ -598,7 +590,7 @@ if len(paths) != len(changelist) and show_nonmatching_paths == 'yes': other_diffs = DiffGenerator(changelist, paths, False, cfg, repos, date, - group, params, diffsels, diffurls, pool), + group, params, diffsels, diffurls), else: other_diffs = [ ] @@ -615,7 +607,7 @@ other_removed_data=other_removed_data, other_modified_data=other_modified_data, diffs=DiffGenerator(changelist, paths, True, cfg, repos, date, group, - params, diffsels, diffurls, pool), + params, diffsels, diffurls), other_diffs=other_diffs, ) renderer.render(data) @@ -650,7 +642,7 @@ "This is a generator-like object returning DiffContent objects." def __init__(self, changelist, paths, in_paths, cfg, repos, date, group, - params, diffsels, diffurls, pool): + params, diffsels, diffurls): self.changelist = changelist self.paths = paths self.in_paths = in_paths @@ -661,7 +653,6 @@ self.params = params self.diffsels = diffsels self.diffurls = diffurls - self.pool = pool self.idx = 0 @@ -720,7 +711,7 @@ # show the diff? if self.diffsels.delete: diff = svn.fs.FileDiff(self.repos.get_root(change.base_rev), - change.base_path, None, None, self.pool) + change.base_path, None, None) label1 = '%s\t%s' % (change.base_path, self.date) label2 = '(empty file)' @@ -743,8 +734,7 @@ if self.diffsels.copy: diff = svn.fs.FileDiff(self.repos.get_root(change.base_rev), change.base_path, - self.repos.root_this, change.path, - self.pool) + self.repos.root_this, change.path) label1 = change.base_path + '\t(original)' label2 = '%s\t%s' % (change.path, self.date) singular = False @@ -760,7 +750,7 @@ # show the diff? if self.diffsels.add: diff = svn.fs.FileDiff(None, None, self.repos.root_this, - change.path, self.pool) + change.path) label1 = '(empty file)' label2 = '%s\t%s' % (change.path, self.date) singular = True @@ -781,8 +771,7 @@ if self.diffsels.modify: diff = svn.fs.FileDiff(self.repos.get_root(change.base_rev), change.base_path, - self.repos.root_this, change.path, - self.pool) + self.repos.root_this, change.path) label1 = change.base_path + '\t(original)' label2 = '%s\t%s' % (change.path, self.date) singular = False @@ -978,12 +967,11 @@ class Repository: "Hold roots and other information about the repository." - def __init__(self, repos_dir, rev, pool): + def __init__(self, repos_dir, rev): self.repos_dir = repos_dir self.rev = rev - self.pool = pool - self.repos_ptr = svn.repos.open(repos_dir, pool) + self.repos_ptr = svn.repos.open(repos_dir) self.fs_ptr = svn.repos.fs(self.repos_ptr) self.roots = { } @@ -993,14 +981,14 @@ self.author = self.get_rev_prop(svn.core.SVN_PROP_REVISION_AUTHOR) def get_rev_prop(self, propname): - return svn.fs.revision_prop(self.fs_ptr, self.rev, propname, self.pool) + return svn.fs.revision_prop(self.fs_ptr, self.rev, propname) def get_root(self, rev): try: return self.roots[rev] except KeyError: pass - root = self.roots[rev] = svn.fs.revision_root(self.fs_ptr, rev, self.pool) + root = self.roots[rev] = svn.fs.revision_root(self.fs_ptr, rev) return root @@ -1276,8 +1264,8 @@ if not os.path.exists(config_fname): raise MissingConfig(config_fname) - svn.core.run_app(main, cmd, config_fname, repos_dir, - sys.argv[3:3+expected_args]) + main(cmd, config_fname, repos_dir, + sys.argv[3:3+expected_args]) # ------------------------------------------------------------------------ # TODO Index: tools/hook-scripts/mailer/tests/mailer-tweak.py =================================================================== --- tools/hook-scripts/mailer/tests/mailer-tweak.py (revision 16222) +++ tools/hook-scripts/mailer/tests/mailer-tweak.py (working copy) @@ -19,26 +19,26 @@ DATE_INCR = 10000 -def tweak_dates(pool, home='.'): +def tweak_dates(home='.'): db_path = os.path.join(home, 'db') if not os.path.exists(db_path): db_path = home - fsob = fs.new(None, pool) + fsob = fs.new(None) fs.open_berkeley(fsob, db_path) - for i in range(fs.youngest_rev(fsob, pool)): + for i in range(fs.youngest_rev(fsob)): # convert secs into microseconds, then a string - date = core.svn_time_to_cstring((DATE_BASE+i*DATE_INCR) * 1000000L, pool) + date = core.svn_time_to_cstring((DATE_BASE+i*DATE_INCR) * 1000000L) #print date - fs.change_rev_prop(fsob, i+1, core.SVN_PROP_REVISION_DATE, date, pool) + fs.change_rev_prop(fsob, i+1, core.SVN_PROP_REVISION_DATE, date) def main(): if len(sys.argv) != 2: print 'USAGE: %s REPOS' % sys.argv[0] sys.exit(1) - core.run_app(tweak_dates, sys.argv[1]) + tweak_dates(sys.argv[1]) if __name__ == '__main__': main()