📄 svn_ra.h
字号:
* * If @a strict_node_history is set, copy history will not be traversed * (if any exists) when harvesting the revision logs for each path. * * If any invocation of @a receiver returns error, return that error * immediately and without wrapping it. * * If @a start or @a end is a non-existent revision, return the error * @c SVN_ERR_FS_NO_SUCH_REVISION, without ever invoking @a receiver. * * See also the documentation for @c svn_log_message_receiver_t. * * The caller may not invoke any RA operations using @a session from * within @a receiver. * * Use @a pool for memory allocation. * * @since New in 1.2. */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);/** * Set @a *kind to the node kind associated with @a path at @a revision. * If @a path does not exist under @a revision, set @a *kind to * @c svn_node_none. @a path is relative to the @a session's parent URL. * * Use @a pool for memory allocation. * * @since New in 1.2. */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);/** * Set @a *dirent to an @c svn_dirent_t associated with @a path at @a * revision. @a path is relative to the @a session's parent's URL. * If @a path does not exist in @a revision, set @a *dirent to NULL. * * Use @a pool for memory allocation. * * @since New in 1.2. */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);/** * Set @a *uuid to the repository's UUID. * * @note The UUID has the same lifetime as the @a session. * * Use @a pool for temporary memory allocation. * * @since New in 1.2. */svn_error_t *svn_ra_get_uuid(svn_ra_session_t *session, const char **uuid, apr_pool_t *pool);/** * Set @a *url to the repository's root URL. The value will not include * a trailing '/'. The returned URL is guaranteed to be a prefix of the * @a session's URL. * * @note The URL has the same lifetime as the @a session. * * Use @a pool for temporary memory allocation. * * @since New in 1.2. */svn_error_t *svn_ra_get_repos_root(svn_ra_session_t *session, const char **url, apr_pool_t *pool);/** * Set @a *locations to the locations (at the repository revisions * @a location_revisions) of the file identified by @a path in * @a peg_revision. @a path is relative to the URL to which * @a session was opened. @a location_revisions is an array of * @c svn_revnum_t's. @a *locations will be a mapping from the revisions to * their appropriate absolute paths. If the file doesn't exist in a * location_revision, that revision will be ignored. * * Use @a pool for all allocations. * * @note This functionality is not available in pre-1.1 servers. If the * server doesn't implement it, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is * returned. * * @since New in 1.2. */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);/** * Retrieve a subset of the interesting revisions of a file @a path * as seen in revision @a end (see svn_fs_history_prev() for a * definition of "interesting revisions"). Invoke @a handler with * @a handler_baton as its first argument for each such revision. * @a session is an open RA session. Use @a pool for all allocations. * * If there is an interesting revision of the file that is less than or * equal to @a start, the iteration will begin at that revision. * Else, the iteration will begin at the first revision of the file in * the repository, which has to be less than or equal to @a end. Note * that if the function succeeds, @a handler will have been called at * least once. * * In a series of calls to @a handler, the file contents for the first * interesting revision will be provided as a text delta against the * empty file. In the following calls, the delta will be against the * fulltext contents for the previous call. * * @note This functionality is not available in pre-1.1 servers. If the * server doesn't implement it, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is * returned. * * @since New in 1.2. */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);/** * Lock each path in @a path_revs, which is a hash whose keys are the * paths to be locked, and whose values are the corresponding bas * revisions for each path. * * Note that locking is never anonymous, so any server implementing * this function will have to "pull" a username from the client, if * it hasn't done so already. * * @a comment is optional: it's either an xml-escapable string * which describes the lock, or it is NULL. * * If any path is already locked by a different user, then call @a * lock_func/@a lock_baton with an error. If @a steal_lock is true, * then "steal" the existing lock(s) anyway, even if the RA username * does not match the current lock's owner. Delete any lock on the * path, and unconditionally create a new lock. * * For each path, if its base revision (in @a path_revs) is a valid * revnum, then do an out-of-dateness check. If the revnum is less * than the last-changed-revision of any path (or if a path doesn't * exist in HEAD), call @a lock_func/@a lock_baton with an * SVN_ERR_RA_OUT_OF_DATE error. * * After successfully locking a file, @a lock_func is called with the * @a lock_baton. * * Use @a pool for temporary allocations. * * @since New in 1.2. */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);/** * Remove the repository lock for each path in @a path_tokens. * @a path_tokens is a hash whose keys are the paths to be locked, and * whose values are the corresponding lock tokens for each path. If * the path has no corresponding lock token, or if @a break_lock is TRUE, * then the corresponding value shall be "". * * Note that unlocking is never anonymous, so any server * implementing this function will have to "pull" a username from * the client, if it hasn't done so already. * * If @a token points to a lock, but the RA username doesn't match the * lock's owner, call @a lockfunc/@a lock_baton with an error. If @a * break_lock is true, however, instead allow the lock to be "broken" * by the RA user. * * After successfully unlocking a path, @a lock_func is called with * the @a lock_baton. * * Use @a pool for temporary allocations. * * @since New in 1.2. */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);/** * If @a path is locked, set @a *lock to an svn_lock_t which * represents the lock, allocated in @a pool. If @a path is not * locked, set @a *lock to NULL. * * @since New in 1.2. */svn_error_t *svn_ra_get_lock(svn_ra_session_t *session, svn_lock_t **lock, const char *path, apr_pool_t *pool);/** * Set @a *locks to a hashtable which represents all locks on or * below @a path. * * The hashtable maps (const char *) absolute fs paths to (const * svn_lock_t *) structures. The hashtable -- and all keys and * values -- are allocated in @a pool. * * @note It is not considered an error for @a path to not exist in HEAD. * Such a search will simply return no locks. * * @note This functionality is not available in pre-1.2 servers. If the * server doesn't implement it, an @c SVN_ERR_RA_NOT_IMPLEMENTED error is * returned. * * @since New in 1.2. */svn_error_t *svn_ra_get_locks(svn_ra_session_t *session, apr_hash_t **locks, const char *path, apr_pool_t *pool);/** * Replay the changes from @a revision through @a editor and @a edit_baton. * * Changes will be limited to those that occur under @a session's URL, and * the server will assume that the client has no knowledge of revisions * prior to @a low_water_mark. These two limiting factors define the portion * of the tree that the server will assume the client already has knowledge of, * and thus any copies of data from outside that part of the tree will be * sent in their entirety, not as simple copies or deltas against a previous * version. * * If @a send_deltas is @c TRUE, the actual text and property changes in * the revision will be sent, otherwise dummy text deltas and null property * changes will be sent instead. * * @a pool is used for all allocation. * * @since New in 1.4. */svn_error_t *svn_ra_replay(svn_ra_session_t *session, svn_revnum_t revision, svn_revnum_t low_water_mark, svn_boolean_t send_deltas, const svn_delta_editor_t *editor, void *edit_baton, apr_pool_t *pool);/** * Append a textual list of all available RA modules to the stringbuf * @a output. * * @since New in 1.2. */svn_error_t *svn_ra_print_modules(svn_stringbuf_t *output, apr_pool_t *pool);/** * Similar to svn_ra_print_modules(). * @a ra_baton is ignored. * * @deprecated Provided for backward compatibility with the 1.1 API. */svn_error_t *svn_ra_print_ra_libraries(svn_stringbuf_t **descriptions, void *ra_baton, apr_pool_t *pool);/** * Using this callback struct is similar to calling the newer public * interface that is based on @c svn_ra_session_t. * * @deprecated Provided for backward compatibility with the 1.1 API. */typedef struct svn_ra_plugin_t{ /** The proper name of the RA library, (like "ra_dav" or "ra_local") */ const char *name; /** Short doc string printed out by `svn --version` */ const char *description; /* The vtable hooks */ /** Call svn_ra_open() and set @a session_baton to an object representing * the new session. All other arguments are passed to svn_ra_open(). */ svn_error_t *(*open)(void **session_baton, const char *repos_URL,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -