⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 repos.rb

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 RB
字号:
require "English"require "svn/error"require "svn/util"require "svn/core"require "svn/fs"require "svn/client"require "svn/ext/repos"module Svn  module Repos    Util.set_constants(Ext::Repos, self)    Util.set_methods(Ext::Repos, self)    @@alias_targets = %w(create open hotcopy recover                         db_logfiles)    class << self      @@alias_targets.each do |target|        alias_method "_#{target}", target      end    end    @@alias_targets.each do |target|      alias_method "_#{target}", target    end    @@alias_targets = nil        module_function    def open(path)      repos = _open(path)      if block_given?        yield repos      else        repos      end    end    def create(path, config={}, fs_config={})      _create(path, nil, nil, config, fs_config)    end    def hotcopy(src, dest, clean_logs=true)      _hotcopy(src, dest, clean_logs)    end    def recover(path,	nonblocking=false)      start_callback = Proc.new do        yield      end      recover2(path, nonblocking, start_callback)    end    def db_logfiles(path, only_unused=true)      _db_logfiles(path, only_unused)    end    def read_authz(file, must_exist=true)      Repos.authz_read(file, must_exist)    end          ReposCore = SWIG::TYPE_p_svn_repos_t    class ReposCore      class << self        def def_simple_delegate(*ids)          ids.each do |id|            module_eval(<<-EOC, __FILE__, __LINE__)            def #{id.to_s}              Repos.#{id.to_s}(self)            end            EOC          end        end      end      def_simple_delegate :path, :db_env, :conf_dir      def_simple_delegate :svnserve_conf, :lock_dir      def_simple_delegate :db_lockfile, :db_logs_lockfile      def_simple_delegate :hook_dir, :start_commit_hook      def_simple_delegate :pre_commit_hook, :post_commit_hook      def_simple_delegate :pre_revprop_change_hook, :post_revprop_change_hook      def_simple_delegate :pre_lock_hook, :post_lock_hook      def_simple_delegate :pre_unlock_hook, :post_unlock_hook      attr_reader :authz_read_func      def fs        Repos.fs_wrapper(self)      end            def set_authz_read_func(&block)        @authz_read_func = block      end            def report(rev, username, fs_base, target, tgt_path,                 editor, text_deltas=true, recurse=true,                 ignore_ancestry=false, authz_read_func=nil)        authz_read_func ||= @authz_read_func        args = [          rev, username, self, fs_base, target, tgt_path,          text_deltas, recurse, ignore_ancestry, editor,          authz_read_func,        ]        report_baton = Repos.begin_report(*args)        setup_report_baton(report_baton)        if block_given?          report_baton.set_path("", rev)          result = yield(report_baton)          report_baton.finish_report unless report_baton.aborted?          result        else          report_baton        end      end      def commit_editor(repos_url, base_path, txn=nil, user=nil,                        log_msg=nil, commit_callback=nil,                        authz_callback=nil)        editor, baton = Repos.get_commit_editor3(self, txn, repos_url,                                                 base_path, user, log_msg,                                                 commit_callback,                                                 authz_callback)        editor.baton = baton        editor      end      def commit_editor2(repos_url, base_path, txn=nil, user=nil,                         log_msg=nil, commit_callback=nil,                         authz_callback=nil)        editor, baton = Repos.get_commit_editor4(self, txn, repos_url,                                                 base_path, user, log_msg,                                                 commit_callback,                                                 authz_callback)        editor.baton = baton        editor      end      def youngest_rev        fs.youngest_rev      end      def dated_revision(date)        Repos.dated_revision(self, date.to_apr_time)      end      def logs(paths, start_rev, end_rev, limit,               discover_changed_paths=true,               strict_node_history=false,               authz_read_func=nil)        authz_read_func ||= @authz_read_func        paths = [paths] unless paths.is_a?(Array)        infos = []        receiver = Proc.new do |changed_paths, revision, author, date, message|          date = Time.parse_svn_format(date) if date          if block_given?            yield(changed_paths, revision, author, date, message)          end          infos << [changed_paths, revision, author, date, message]        end        Repos.get_logs3(self, paths, start_rev, end_rev,                        limit, discover_changed_paths,                        strict_node_history, authz_read_func,                        receiver)        infos      end      def file_revs(path, start_rev, end_rev, authz_read_func=nil)        authz_read_func ||= @authz_read_func        revs = []        handler = Proc.new do |path, rev, rev_props, prop_diffs|          yield(path, rev, rev_props, prop_diffs) if block_given?          revs << [path, rev, rev_props, prop_diffs]        end        Repos.get_file_revs(self, path, start_rev, end_rev,                            authz_read_func, handler)        revs      end      def commit_txn(txn)        Repos.fs_commit_txn(self, txn)      end      def transaction_for_commit(author, log, rev=nil)        txn = nil        args = [self, rev || youngest_rev, author, log]        txn = Repos.fs_begin_txn_for_commit(*args)                if block_given?          yield(txn)          commit(txn) if fs.transactions.include?(txn.name)        else          txn        end      end      def transaction_for_update(author, rev=nil)        txn = nil        args = [self, rev || youngest_rev, author]        txn = Repos.fs_begin_txn_for_update(*args)                if block_given?          yield(txn)          txn.abort if fs.transactions.include?(txn.name)        else          txn        end      end            def commit(txn)        Repos.fs_commit_txn(self, txn)      end      def lock(path, token=nil, comment=nil, dav_comment=true,               expiration_date=nil, current_rev=nil, steal_lock=false)        if expiration_date          expiration_date = expiration_date.to_apr_time        else          expiration_date = 0        end        current_rev ||= youngest_rev        Repos.fs_lock(self, path, token, comment,                      dav_comment, expiration_date,                      current_rev, steal_lock)      end      def unlock(path, token, break_lock=false)        Repos.fs_unlock(self, path, token, break_lock)      end      def get_locks(path, authz_read_func=nil)        authz_read_func ||= @authz_read_func        Repos.fs_get_locks(self, path, authz_read_func)      end      def set_prop(author, name, new_value, rev=nil, authz_read_func=nil)        authz_read_func ||= @authz_read_func        rev ||= youngest_rev        Repos.fs_change_rev_prop2(self, rev, author, name,                                  new_value, authz_read_func)      end      def prop(name, rev=nil, authz_read_func=nil)        authz_read_func ||= @authz_read_func        rev ||= youngest_rev        Repos.fs_revision_prop(self, rev, name, authz_read_func)      end      def proplist(rev=nil, authz_read_func=nil)        authz_read_func ||= @authz_read_func        rev ||= youngest_rev        Repos.fs_revision_proplist(self, rev, authz_read_func)      end      def node_editor(base_root, root)        editor, baton = Repos.node_editor(self, base_root, root)        def baton.node          Repos.node_from_baton(self)        end        editor.baton = baton        editor      end      def dump_fs(dumpstream, feedback_stream, start_rev, end_rev,                  incremental=true, use_deltas=true, &cancel_func)        Repos.dump_fs2(self, dumpstream, feedback_stream,                       start_rev, end_rev, incremental,                       use_deltas, cancel_func)      end      def load_fs(dumpstream, feedback_stream, uuid_action,                  parent_dir, use_pre_commit_hook=true,                  use_post_commit_hook=true, &cancel_func)        Repos.load_fs2(self, dumpstream, feedback_stream,                       uuid_action, parent_dir,                       use_pre_commit_hook, use_post_commit_hook,                       cancel_func)      end      def build_parser(uuid_action, parent_dir,                       use_history=true, outstream=nil)        outstream ||= StringIO.new        parser, baton = Repos.get_fs_build_parser2(use_history,                                                   uuid_action,                                                   outstream,                                                   parent_dir)        def parser.parse_dumpstream(stream, &cancel_func)          Repos.parse_dumpstream2(stream, self, @baton, cancel_func)        end        def parser.outstream=(new_stream)          @outstream = new_stream        end              def parser.baton=(new_baton)          @baton = new_baton        end                def parser.baton          @baton        end        parser.outstream = outstream        parser.baton = baton        parser      end          def delta_tree(root, base_rev)        base_root = fs.root(base_rev)        editor = node_editor(base_root, root)        root.replay(editor)        editor.baton.node      end            private      def setup_report_baton(baton)        baton.instance_variable_set("@aborted", false)                def baton.aborted?          @aborted        end                def baton.set_path(path, revision, start_empty=false, lock_token=nil)          Repos.set_path2(self, path, revision, start_empty, lock_token)        end                def baton.link_path(path, link_path, revision,                            start_empty=false, lock_token=nil)          Repos.link_path2(self, path, link_path, revision,                           start_empty, lock_token)        end                def baton.delete_path(path)          Repos.delete_path(self, path)        end                def baton.finish_report          Repos.finish_report(self)        end                def baton.abort_report          Repos.abort_report(self)          @aborted = true        end              end    end            class Node            alias text_mod? text_mod      alias prop_mod? prop_mod            def copy?        Util.copy?(copyfrom_path, copyfrom_rev)      end            def add?        action == "A"      end            def delete?        action == "D"      end      def replace?        action == "R"      end      def file?        kind == Core::NODE_FILE      end      def dir?        kind == Core::NODE_DIR      end      def none?        kind == Core::NODE_NONE      end      def unknown?        kind == Core::NODE_UNKNOWN      end          end    Authz = SWIG::TYPE_p_svn_authz_t    class Authz      class << self        def read(file, must_exist=true)          Repos.authz_read(file, must_exist)        end      end            def can_access?(repos_name, path, user, required_access)        Repos.authz_check_access(self,                                 repos_name,                                 path,                                 user,                                 required_access)      end    end  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -