📄 svn_client.h
字号:
/** notification callback function */
svn_wc_notify_func_t notify_func;
/** notification callback baton */
void *notify_baton;
/** log message callback function */
svn_client_get_commit_log_t log_msg_func;
/** log message callback baton */
void *log_msg_baton;
/** a hash mapping of <tt>const char *</tt> configuration file names to
* @c svn_config_t *'s, for example, the '~/.subversion/config' file's
* contents should have the key "config".
*/
apr_hash_t *config;
/** a callback to be used to see if the client wishes to cancel the running
* operation. */
svn_cancel_func_t cancel_func;
/** a baton to pass to the cancellation callback. */
void *cancel_baton;
} svn_client_ctx_t;
/** Names of files that contain authentication information.
*
* These filenames are decided by libsvn_client, since this library
* implements all the auth-protocols; libsvn_wc does nothing but
* blindly store and retrieve these files from protected areas.
*
* @defgroup svn_client_auth_files authentication files
* @{
*/
#define SVN_CLIENT_AUTH_USERNAME "username"
#define SVN_CLIENT_AUTH_PASSWORD "password"
/** @} */
/** Initialize a client context.
* Set @a *ctx to a client context object, allocated in @a pool, that
* represents a particular instance of an svn client.
*
* In order to avoid backwards compatability problems, clients must
* use this function to intialize and allocate the
* @c svn_client_ctx_t structure rather than doing so themselves, as
* the size of this structure may change in the future.
*
* The current implementation never returns error, but callers should
* still check for error, for compatibility with future versions.
*/
svn_error_t *
svn_client_create_context (svn_client_ctx_t **ctx,
apr_pool_t *pool);
/** Checkout a working copy of @a URL at @a revision, using @a path as
* the root directory of the newly checked out working copy, and
* authenticating with the authentication baton cached in @a ctx. If
* @a result_rev is not @c NULL, set @a *result_rev to the value of
* the revision actually checked out from the repository.
*
* @a revision must be of kind @c svn_opt_revision_number,
* @c svn_opt_revision_head, or @c svn_opt_revision_date. If
* @c revision does not meet these requirements, return the error
* @c SVN_ERR_CLIENT_BAD_REVISION.
*
* If @a ctx->notify_func is non-null, invoke @a ctx->notify_func with
* @a ctx->notify_baton as the checkout progresses.
*
* Use @a pool for any temporary allocation.
*/
svn_error_t *
svn_client_checkout (svn_revnum_t *result_rev,
const char *URL,
const char *path,
const svn_opt_revision_t *revision,
svn_boolean_t recurse,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Update working tree @a path to @a revision, authenticating with
* the authentication baton cached in @a ctx. If @a result_rev is not
* @c NULL, set @a *result_rev to the value of the revision to which
* the working copy was actually updated.
*
* @a revision must be of kind @c svn_opt_revision_number,
* @c svn_opt_revision_head, or @c svn_opt_revision_date. If @a
* revision does not meet these requirements, return the error
* @c SVN_ERR_CLIENT_BAD_REVISION.
*
* If @a ctx->notify_func is non-null, invoke @a ctx->notify_func with
* @a ctx->notify_baton for each item handled by the update, and also for
* files restored from text-base.
*
* If @a path is not found, return the error @c SVN_ERR_ENTRY_NOT_FOUND.
*
* Use @a pool for any temporary allocation.
*/
svn_error_t *
svn_client_update (svn_revnum_t *result_rev,
const char *path,
const svn_opt_revision_t *revision,
svn_boolean_t recurse,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Switch working tree @a path to @a url at @a revision,
* authenticating with the authentication baton cached in @a ctx. If
* @a result_rev is not @c NULL, set @a *result_rev to the value of
* the revision to which the working copy was actually switched.
*
* Summary of purpose: this is normally used to switch a working
* directory over to another line of development, such as a branch or
* a tag. Switching an existing working directory is more efficient
* than checking out @a url from scratch.
*
* @a revision must be of kind @c svn_opt_revision_number,
* @c svn_opt_revision_head, or @c svn_opt_revision_date; otherwise,
* return @c SVN_ERR_CLIENT_BAD_REVISION.
*
* If @a ctx->notify_func is non-null, invoke it with @a ctx->notify_baton
* on paths affected by the switch. Also invoke it for files may be restored
* from the text-base because they were removed from the working copy.
*
* Use @a pool for any temporary allocation.
*/
svn_error_t *
svn_client_switch (svn_revnum_t *result_rev,
const char *path,
const char *url,
const svn_opt_revision_t *revision,
svn_boolean_t recurse,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Schedule a working copy @a path for addition to the repository.
*
* @a path's parent must be under revision control already, but @a
* path is not. If @a recursive is set, then assuming @a path is a
* directory, all of its contents will be scheduled for addition as
* well.
*
* If @a force is not set and @a path is already under version
* control, return the error @c SVN_ERR_ENTRY_EXISTS. If @a force is
* set, do not error on already-versioned items. When used on a
* directory in conjunction with the @a recursive flag, this has the
* effect of scheduling for addition unversioned files and directories
* scattered deep within a versioned tree.
*
* If @a ctx->notify_func is non-null, then for each added item, call
* @a ctx->notify_func with @a ctx->notify_baton and the path of the
* added item.
*
* Important: this is a *scheduling* operation. No changes will
* happen to the repository until a commit occurs. This scheduling
* can be removed with svn_client_revert.
*/
svn_error_t *
svn_client_add2 (const char *path,
svn_boolean_t recursive,
svn_boolean_t force,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/**
* @deprecated Provided for backward compatibility with the 1.0.0 API.
*
* Similar to svn_client_add2(), but with the @a force parameter
* always set to @c FALSE.
*/
svn_error_t *
svn_client_add (const char *path,
svn_boolean_t recursive,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Create a directory, either in a repository or a working copy.
*
* If @a paths contains URLs, use the authentication baton in @a ctx
* and @a message to immediately attempt to commit the creation of the
* directories in @a paths in the repository. If the commit succeeds,
* allocate (in @a pool) and populate @a *commit_info.
*
* Else, create the directories on disk, and attempt to schedule them
* for addition (using @c svn_client_add, whose docstring you should
* read).
*
* @a ctx->log_msg_func/@a ctx->log_msg_baton are a callback/baton combo that
* this function can use to query for a commit log message when one is
* needed.
*
* If @a ctx->notify_func is non-null, when the directory has been created
* (successfully) in the working copy, call @a ctx->notify_func with
* @a ctx->notify_baton and the path of the new directory. Note that this is
* only called for items added to the working copy. */
svn_error_t *
svn_client_mkdir (svn_client_commit_info_t **commit_info,
const apr_array_header_t *paths,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Delete items from a repository or working copy.
*
* If the paths in @a paths are URLs, use the authentication baton in
* @a ctx and @a ctx->log_msg_func/@a ctx->log_msg_baton to
* immediately attempt to commit a deletion of the URLs from the
* repository. If the commit succeeds, allocate (in @a pool) and
* populate @a *commit_info. Every path must belong to the same
* repository.
*
* Else, schedule the working copy paths in @a paths for removal from
* the repository. Each path's parent must be under revision control.
* This is just a *scheduling* operation. No changes will happen to
* the repository until a commit occurs. This scheduling can be
* removed with @c svn_client_revert. If a path is a file it is
* immediately removed from the working copy. If the path is a
* directory it will remain in the working copy but all the files, and
* all unversioned items, it contains will be removed. If @a force is
* not set then this operation will fail if any path contains locally
* modified and/or unversioned items. If @a force is set such items
* will be deleted.
*
* @a ctx->log_msg_func/@a ctx->log_msg_baton are a callback/baton combo that
* this function can use to query for a commit log message when one is
* needed.
*
* If @a ctx->notify_func is non-null, then for each item deleted, call
* @a ctx->notify_func with @a ctx->notify_baton and the path of the deleted
* item. */
svn_error_t *
svn_client_delete (svn_client_commit_info_t **commit_info,
const apr_array_header_t *paths,
svn_boolean_t force,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Import file or directory @a path into repository directory @a url at
* head, authenticating with the authentication baton cached in @a ctx,
* and using @a ctx->log_msg_func/@a ctx->log_msg_baton to get a log message
* for the (implied) commit. Set @a *commit_info to the results of the
* commit, allocated in @a pool. If some components of @a url do not exist
* then create parent directories as necessary.
*
* If @a path is a directory, the contents of that directory are
* imported directly into the directory identified by @a url. Note that the
* directory @a path itself is not imported -- that is, the basename of
* @a path is not part of the import.
*
* If @a path is a file, then the dirname of @a url is the directory
* receiving the import. The basename of @a url is the filename in the
* repository. In this case if @a url already exists, return error.
*
* If @a ctx->notify_func is non-null, then call @a ctx->notify_func with
* @a ctx->notify_baton as the import progresses, with any of the following
* actions: @c svn_wc_notify_commit_added,
* @c svn_wc_notify_commit_postfix_txdelta.
*
* Use @a pool for any temporary allocation.
*
* @a ctx->log_msg_func/@a ctx->log_msg_baton are a callback/baton combo that
* this function can use to query for a commit log message when one is needed.
*
* Use @a nonrecursive to indicate that imported directories should not
* recurse into any subdirectories they may have.
*
* ### kff todo: This import is similar to cvs import, in that it does
* not change the source tree into a working copy. However, this
* behavior confuses most people, and I think eventually svn _should_
* turn the tree into a working copy, or at least should offer the
* option. However, doing so is a bit involved, and we don't need it
* right now.
*/
svn_error_t *svn_client_import (svn_client_commit_info_t **commit_info,
const char *path,
const char *url,
svn_boolean_t nonrecursive,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Commit file or directory @a path into repository, authenticating with
* the authentication baton cached in @a ctx, and using
* @a ctx->log_msg_func/@a ctx->log_msg_baton to obtain the log message.
* Set @a *commit_info to the results of the commit, allocated in @a pool.
*
* @a targets is an array of <tt>const char *</tt> paths to commit. They
* need not be canonicalized nor condensed; this function will take care of
* that. If @a targets has zero elements, then do nothing and return
* immediately without error.
*
* If @a notify_func is non-null, then call @a ctx->notify_func with
* @a ctx->notify_baton as the commit progresses, with any of the following
* actions: @c svn_wc_notify_commit_modified, @c svn_wc_notify_commit_added,
* @c svn_wc_notify_commit_deleted, @c svn_wc_notify_commit_replaced,
* @c svn_wc_notify_commit_postfix_txdelta.
*
* Use @a nonrecursive to indicate that subdirectories of directory
* @a targets should be ignored.
*
* Use @a pool for any temporary allocation.
*
* If no error is returned and @a (*commit_info)->revision is set to
* @c SVN_INVALID_REVNUM, then the commit was a no-op; nothing needed to
* be committed.
*/
svn_error_t *
svn_client_commit (svn_client_commit_info_t **commit_info,
const apr_array_header_t *targets,
svn_boolean_t nonrecursive,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
/** Given @a path to a working copy directory (or single file), call
* @a status_func/status_baton with a set of @c svn_wc_status_t *
* structures which describe the status of @a path and its children.
*
* - If @a descend is non-zero, recurse fully, else do only
* immediate children.
*
* - If @a get_all is set, retrieve all entries; otherwise,
* retrieve only "interesting" entries (local mods and/or
* out-of-date).
*
* - If @a update is set, contact the repository and augment the
* status structures with information about out-of-dateness (with
* respect to @a revision). Also, if @a result_rev is not @c NULL,
* set @a *result_rev to the actual revision against which the
* working copy was compared (@a *result_rev is not meaningful unless
* @a update is set).
*
* This function recurses into externals definitions ('svn:externals')
* after handling the main target, if any exist. The function calls
* the client notification function (in @a ctx) with the @c
* svn_wc_notify_status_external action before handling each externals
* definition, and with @c svn_wc_notify_status_completed after each.
*/
svn_error_t *
svn_client_status (svn_revnum_t *result_rev,
const char *path,
svn_opt_revision_t *revision,
svn_wc_status_func_t status_func,
void *status_baton,
svn_boolean_t descend,
svn_boolean_t get_all,
svn_boolean_t update,
svn_boolean_t no_ignore,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -