def main(): argc = len(sys.argv) if argc < 4 or argc > 5: usage_and_exit("Not enough arguments provided.") try: repos_path = core.svn_path_canonicalize(sys.argv[1]) except AttributeError: repos_path = os.path.normpath(sys.argv[1]) if repos_path[-1] == '/' and len(repos_path) > 1: repos_path = repos_path[:-1] try: author = sys.argv[4] except IndexError: author = None mode = sys.argv[2] try: if mode == "replace": old_author = sys.argv[3] fs_obj = get_fs_obj(repos_path) for revision in range(fs.svn_fs_youngest_rev(fs_obj) + 1): if fetch_rev_author(fs_obj, revision) == old_author: tweak_rev_author(fs_obj, revision, author) elif mode == "revision": try: revision = int(sys.argv[3]) except ValueError: usage_and_exit("Invalid revision number (%s) provided." % (sys.argv[3])) tweak_rev_author(get_fs_obj(repos_path), revision, author) else: usage_and_exit("Invalid mode (%s) provided." % (mode)) except SystemExit: raise except Exception as e: error_and_exit(str(e))
def main(pool, 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): sys.stderr.write( """Locking of path '%s' prohibited by repository policy (must have %s property set) """ % (path, core.SVN_PROP_NEEDS_LOCK)) return 1 return 0
def crawl_revisions(pool, repos_path): """Open the repository at REPOS_PATH, and recursively crawl all its revisions.""" global final_rev # Open the repository at REPOS_PATH, and get a reference to its # versioning filesystem. repos_obj = svn_repos_open(repos_path, pool) fs_obj = svn_repos_fs(repos_obj) # Query the current youngest revision. youngest_rev = svn_fs_youngest_rev(fs_obj, pool) first_rev = 1 if final_rev == 0: final_rev = youngest_rev for rev in xrange(first_rev, final_rev + 1): export_revision(rev, repos_obj, fs_obj, pool)