📄 ra_loader.c
字号:
const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, svn_commit_callback_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, apr_pool_t *pool){ svn_commit_callback2_t callback2; void *callback2_baton; svn_compat_wrap_commit_callback(&callback2, &callback2_baton, callback, callback_baton, pool); return svn_ra_get_commit_editor2(session, editor, edit_baton, log_msg, callback2, callback2_baton, lock_tokens, keep_locks, pool);}svn_error_t *svn_ra_get_file(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_stream_t *stream, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool){ return session->vtable->get_file(session, path, revision, stream, fetched_rev, props, pool);}svn_error_t *svn_ra_get_dir(svn_ra_session_t *session, const char *path, svn_revnum_t revision, apr_hash_t **dirents, svn_revnum_t *fetched_rev, apr_hash_t **props, apr_pool_t *pool){ return session->vtable->get_dir(session, dirents, fetched_rev, props, path, revision, SVN_DIRENT_ALL, pool);}svn_error_t *svn_ra_get_dir2(svn_ra_session_t *session, apr_hash_t **dirents, svn_revnum_t *fetched_rev, apr_hash_t **props, const char *path, svn_revnum_t revision, apr_uint32_t dirent_fields, apr_pool_t *pool){ return session->vtable->get_dir(session, dirents, fetched_rev, props, path, revision, dirent_fields, pool);}svn_error_t *svn_ra_do_update(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision_to_update_to, const char *update_target, svn_boolean_t recurse, const svn_delta_editor_t *update_editor, void *update_baton, apr_pool_t *pool){ return session->vtable->do_update(session, reporter, report_baton, revision_to_update_to, update_target, recurse, update_editor, update_baton, pool);}svn_error_t *svn_ra_do_switch(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision_to_switch_to, const char *switch_target, svn_boolean_t recurse, const char *switch_url, const svn_delta_editor_t *switch_editor, void *switch_baton, apr_pool_t *pool){ return session->vtable->do_switch(session, reporter, report_baton, revision_to_switch_to, switch_target, recurse, switch_url, switch_editor, switch_baton, pool);}svn_error_t *svn_ra_do_status(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, const char *status_target, svn_revnum_t revision, svn_boolean_t recurse, const svn_delta_editor_t *status_editor, void *status_baton, apr_pool_t *pool){ return session->vtable->do_status(session, reporter, report_baton, status_target, revision, recurse, status_editor, status_baton, pool);}svn_error_t *svn_ra_do_diff2(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t text_deltas, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool){ return session->vtable->do_diff(session, reporter, report_baton, revision, diff_target, recurse, ignore_ancestry, text_deltas, versus_url, diff_editor, diff_baton, pool);}svn_error_t *svn_ra_do_diff(svn_ra_session_t *session, const svn_ra_reporter2_t **reporter, void **report_baton, svn_revnum_t revision, const char *diff_target, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, const char *versus_url, const svn_delta_editor_t *diff_editor, void *diff_baton, apr_pool_t *pool){ return svn_ra_do_diff2(session, reporter, report_baton, revision, diff_target, recurse, ignore_ancestry, TRUE, versus_url, diff_editor, diff_baton, pool);}svn_error_t *svn_ra_get_log(svn_ra_session_t *session, const apr_array_header_t *paths, svn_revnum_t start, svn_revnum_t end, int limit, svn_boolean_t discover_changed_paths, svn_boolean_t strict_node_history, svn_log_message_receiver_t receiver, void *receiver_baton, apr_pool_t *pool){ return session->vtable->get_log(session, paths, start, end, limit, discover_changed_paths, strict_node_history, receiver, receiver_baton, pool);}svn_error_t *svn_ra_check_path(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_node_kind_t *kind, apr_pool_t *pool){ return session->vtable->check_path(session, path, revision, kind, pool);}svn_error_t *svn_ra_stat(svn_ra_session_t *session, const char *path, svn_revnum_t revision, svn_dirent_t **dirent, apr_pool_t *pool){ return session->vtable->stat(session, path, revision, dirent, pool);}svn_error_t *svn_ra_get_uuid(svn_ra_session_t *session, const char **uuid, apr_pool_t *pool){ return session->vtable->get_uuid(session, uuid, pool);}svn_error_t *svn_ra_get_repos_root(svn_ra_session_t *session, const char **url, apr_pool_t *pool){ return session->vtable->get_repos_root(session, url, pool);}svn_error_t *svn_ra_get_locations(svn_ra_session_t *session, apr_hash_t **locations, const char *path, svn_revnum_t peg_revision, apr_array_header_t *location_revisions, apr_pool_t *pool){ return session->vtable->get_locations(session, locations, path, peg_revision, location_revisions, pool);}svn_error_t *svn_ra_get_file_revs(svn_ra_session_t *session, const char *path, svn_revnum_t start, svn_revnum_t end, svn_ra_file_rev_handler_t handler, void *handler_baton, apr_pool_t *pool){ return session->vtable->get_file_revs(session, path, start, end, handler, handler_baton, pool);}svn_error_t *svn_ra_lock(svn_ra_session_t *session, apr_hash_t *path_revs, const char *comment, svn_boolean_t steal_lock, svn_ra_lock_callback_t lock_func, void *lock_baton, apr_pool_t *pool){ if (comment && ! svn_xml_is_xml_safe(comment, strlen(comment))) return svn_error_create (SVN_ERR_XML_UNESCAPABLE_DATA, NULL, _("Lock comment has illegal characters")); return session->vtable->lock(session, path_revs, comment, steal_lock, lock_func, lock_baton, pool);}svn_error_t *svn_ra_unlock(svn_ra_session_t *session, apr_hash_t *path_tokens, svn_boolean_t break_lock, svn_ra_lock_callback_t lock_func, void *lock_baton, apr_pool_t *pool){ return session->vtable->unlock(session, path_tokens, break_lock, lock_func, lock_baton, pool);}svn_error_t *svn_ra_get_lock(svn_ra_session_t *session, svn_lock_t **lock, const char *path, apr_pool_t *pool){ return session->vtable->get_lock(session, lock, path, pool);}svn_error_t *svn_ra_get_locks(svn_ra_session_t *session, apr_hash_t **locks, const char *path, apr_pool_t *pool){ return session->vtable->get_locks(session, locks, path, pool);}svn_error_t *svn_ra_replay(svn_ra_session_t *session, svn_revnum_t revision, svn_revnum_t low_water_mark, svn_boolean_t text_deltas, const svn_delta_editor_t *editor, void *edit_baton, apr_pool_t *pool){ return session->vtable->replay(session, revision, low_water_mark, text_deltas, editor, edit_baton, pool);}svn_error_t *svn_ra_print_modules(svn_stringbuf_t *output, apr_pool_t *pool){ const struct ra_lib_defn *defn; const char * const *schemes; svn_ra__init_func_t initfunc; const svn_ra__vtable_t *vtable; apr_pool_t *iterpool = svn_pool_create(pool); for (defn = ra_libraries; defn->ra_name != NULL; ++defn) { char *line; svn_pool_clear(iterpool); initfunc = defn->initfunc; if (! initfunc) SVN_ERR(load_ra_module(&initfunc, NULL, defn->ra_name, iterpool)); if (initfunc) { SVN_ERR(initfunc(svn_ra_version(), &vtable, iterpool)); SVN_ERR(check_ra_version(vtable->get_version(), defn->ra_name)); line = apr_psprintf(iterpool, "* ra_%s : %s\n", defn->ra_name, vtable->get_description()); svn_stringbuf_appendcstr(output, line); for (schemes = vtable->get_schemes(iterpool); *schemes != NULL; ++schemes) { line = apr_psprintf(iterpool, _(" - handles '%s' scheme\n"), *schemes); svn_stringbuf_appendcstr(output, line); } } } svn_pool_destroy(iterpool); return SVN_NO_ERROR;}svn_error_t *svn_ra_print_ra_libraries(svn_stringbuf_t **descriptions, void *ra_baton, apr_pool_t *pool){ *descriptions = svn_stringbuf_create("", pool); return svn_ra_print_modules(*descriptions, pool);}/* Return the library version number. */const svn_version_t *svn_ra_version(void){ SVN_VERSION_BODY;}/*** Compatibility Interfaces **/svn_error_t *svn_ra_init_ra_libs(void **ra_baton, apr_pool_t *pool){ *ra_baton = pool; return SVN_NO_ERROR;}svn_error_t *svn_ra_get_ra_library(svn_ra_plugin_t **library, void *ra_baton, const char *url, apr_pool_t *pool){ const struct ra_lib_defn *defn; apr_pool_t *load_pool = ra_baton; apr_hash_t *ht = apr_hash_make(pool); /* Figure out which RA library key matches URL. */ for (defn = ra_libraries; defn->ra_name != NULL; ++defn) { const char *scheme; if ((scheme = has_scheme_of(defn, url))) { svn_ra_init_func_t compat_initfunc = defn->compat_initfunc; if (! compat_initfunc) { SVN_ERR(load_ra_module (NULL, &compat_initfunc, defn->ra_name, load_pool)); } if (! compat_initfunc) { continue; } SVN_ERR(compat_initfunc(SVN_RA_ABI_VERSION, load_pool, ht)); *library = apr_hash_get(ht, scheme, APR_HASH_KEY_STRING); /* The library may support just a subset of the schemes listed, so we have to check here too. */ if (! *library) break; SVN_ERR(check_ra_version((*library)->get_version(), scheme)); return SVN_NO_ERROR; } } /* Couldn't find a match... */ *library = NULL; return svn_error_createf(SVN_ERR_RA_ILLEGAL_URL, NULL, _("Unrecognized URL scheme '%s'"), url);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -