📄 svn_wc.h
字号:
svn_revnum_t *edit_revision,
svn_wc_adm_access_t *anchor,
const char *target,
apr_hash_t *config,
svn_boolean_t descend,
svn_boolean_t get_all,
svn_boolean_t no_ignore,
svn_wc_status_func_t status_func,
void *status_baton,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_traversal_info_t *traversal_info,
apr_pool_t *pool);
/** @} */
/** Copy @a src to @a dst_basename in @a dst_parent, and schedule
* @a dst_basename for addition to the repository, remembering the copy
* history.
*
* @a src must be a file or directory under version control; @a dst_parent
* must be a directory under version control in the same working copy;
* @a dst_basename will be the name of the copied item, and it must not
* exist already.
*
* If @a cancel_func is non-null, call it with @a cancel_baton at
* various points during the operation. If it returns an error
* (typically @c SVN_ERR_CANCELLED), return that error immediately.
*
* For each file or directory copied, @a notify_func will be called
* with its path and the @a notify_baton. @a notify_func may be @c NULL
* if you are not interested in this information.
*
* Important: this is a variant of @c svn_wc_add. No changes will happen
* to the repository until a commit occurs. This scheduling can be
* removed with @c svn_client_revert.
*/
svn_error_t *svn_wc_copy (const char *src,
svn_wc_adm_access_t *dst_parent,
const char *dst_basename,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func_t notify_func,
void *notify_baton,
apr_pool_t *pool);
/** Schedule @a path for deletion, it will be deleted from the repository on
* the next commit. If @a path refers to a directory, then a recursive
* deletion will occur. @a adm_access must hold a write lock for the parent
* of @a path.
*
* This function immediately deletes all files, modified and unmodified,
* versioned and unversioned from the working copy. It also immediately
* deletes unversioned directories and directories that are scheduled to be
* added. Only versioned directories will remain in the working copy,
* these get deleted by the update following the commit.
*
* If @a cancel_func is non-null, call it with @a cancel_baton at
* various points during the operation. If it returns an error
* (typically @c SVN_ERR_CANCELLED), return that error immediately.
*
* For each path marked for deletion, @a notify_func will be called with
* the @a notify_baton and that path. The @a notify_func callback may be
* @c NULL if notification is not needed.
*/
svn_error_t *svn_wc_delete (const char *path,
svn_wc_adm_access_t *adm_access,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func_t notify_func,
void *notify_baton,
apr_pool_t *pool);
/** Put @a path under version control by adding an entry in its parent,
* and, if @a path is a directory, adding an administrative area. The
* new entry and anything under it is scheduled for addition to the
* repository. @a parent_access should hold a write lock for the parent
* directory of @a path. If @a path is a directory then an access baton
* for @a path will be added to the set containing @a parent_access.
*
* If @a path does not exist, return @c SVN_ERR_WC_PATH_NOT_FOUND.
*
* If @a copyfrom_url is non-null, it and @a copyfrom_rev are used as
* `copyfrom' args. This is for copy operations, where one wants
* to schedule @a path for addition with a particular history.
*
* If @a cancel_func is non-null, call it with @a cancel_baton at
* various points during the operation. If it returns an error
* (typically @c SVN_ERR_CANCELLED), return that error immediately.
*
* When the @a path has been added, then @a notify_func will be called
* (if it is not @c NULL) with the @a notify_baton and the path.
*
* Return @c SVN_ERR_WC_NODE_KIND_CHANGE if @a path is both an unversioned
* directory and a file that is scheduled for deletion or in state deleted.
*
*<pre> ### This function currently does double duty -- it is also
* ### responsible for "switching" a working copy directory over to a
* ### new copyfrom ancestry and scheduling it for addition. Here is
* ### the old doc string from Ben, lightly edited to bring it
* ### up-to-date, explaining the true, secret life of this function:</pre>
*
* Given a @a path within a working copy of type KIND, follow this algorithm:
*
* - if @a path is not under version control:
* - Place it under version control and schedule for addition;
* if @a copyfrom_url is non-null, use it and @a copyfrom_rev as
* 'copyfrom' history
*
* - if @a path is already under version control:
* (This can only happen when a directory is copied, in which
* case ancestry must have been supplied as well.)
*
* - Schedule the directory itself for addition with copyfrom history.
* - Mark all its children with a 'copied' flag
* - Rewrite all the URLs to what they will be after a commit.
* - ### TODO: remove old wcprops too, see the '###'below
*
*<pre> ### I think possibly the "switchover" functionality should be
* ### broken out into a separate function, but its all intertwined in
* ### the code right now. Ben, thoughts? Hard? Easy? Mauve?</pre>
*
* ### Update: see "###" comment in svn_wc_add_repos_file()'s doc
* string about this.
*/
svn_error_t *svn_wc_add (const char *path,
svn_wc_adm_access_t *parent_access,
const char *copyfrom_url,
svn_revnum_t copyfrom_rev,
svn_cancel_func_t cancel_func,
void *cancel_baton,
svn_wc_notify_func_t notify_func,
void *notify_baton,
apr_pool_t *pool);
/** Add a file to a working copy at @a dst_path, obtaining the file's
* contents from @a new_text_path and its properties from @a new_props,
* which normally come from the repository file represented by the
* copyfrom args, see below. The new file will be scheduled for
* addition with history.
*
* Automatically remove @a new_text_path upon successful completion.
*
* @a adm_access, or an access baton in its associated set, must
* contain a write lock for the parent of @a dst_path.
*
* If @a copyfrom_url is non-null, then @a copyfrom_rev must be a
* valid revision number, and together they are the copyfrom history
* for the new file.
*
* Use @a pool for temporary allocations.
*
* ### This function is very redundant with svn_wc_add(). Ideally,
* we'd merge them, so that svn_wc_add() would just take optional
* new_props and optional copyfrom information. That way it could be
* used for both 'svn add somefilesittingonmydisk' and for adding
* files from repositories, with or without copyfrom history.
*
* The problem with this Ideal Plan is that svn_wc_add() also takes
* care of recursive URL-rewriting. There's a whole comment in its
* doc string about how that's really weird, outside its core mission,
* etc, etc. So another part of the Ideal Plan is that that
* functionality of svn_wc_add() would move into a separate function.
*/
svn_error_t *svn_wc_add_repos_file (const char *dst_path,
svn_wc_adm_access_t *adm_access,
const char *new_text_path,
apr_hash_t *new_props,
const char *copyfrom_url,
svn_revnum_t copyfrom_rev,
apr_pool_t *pool);
/** Remove entry @a name in @a adm_access from revision control. @a name
* must be either a file or @c SVN_WC_ENTRY_THIS_DIR. @a adm_access must
* hold a write lock.
*
* If @a name is a file, all its info will be removed from @a adm_access's
* administrative directory. If @a name is @c SVN_WC_ENTRY_THIS_DIR, then
* @a adm_access's entire administrative area will be deleted, along with
* *all* the administrative areas anywhere in the tree below @a adm_access.
*
* Normally, only administrative data is removed. However, if
* @a destroy_wf is true, then all working file(s) and dirs are deleted
* from disk as well. When called with @a destroy_wf, any locally
* modified files will *not* be deleted, and the special error
* @c SVN_ERR_WC_LEFT_LOCAL_MOD might be returned. (Callers only need to
* check for this special return value if @a destroy_wf is true.)
*
* If @a instant_error is TRUE, then return @c
* SVN_ERR_WC_LEFT_LOCAL_MOD the instant a locally modified file is
* encountered. Otherwise, leave locally modified files in place and
* return the error only after all the recursion is complete.
* If @a cancel_func is non-null, call it with @a cancel_baton at
* various points during the removal. If it returns an error
* (typically @c SVN_ERR_CANCELLED), return that error immediately.
*
* WARNING: This routine is exported for careful, measured use by
* libsvn_client. Do *not* call this routine unless you really
* understand what the heck you're doing.
*/
svn_error_t *
svn_wc_remove_from_revision_control (svn_wc_adm_access_t *adm_access,
const char *name,
svn_boolean_t destroy_wf,
svn_boolean_t instant_error,
svn_cancel_func_t cancel_func,
void *cancel_baton,
apr_pool_t *pool);
/** Assuming @a path is under version control and in a state of conflict,
* then take @a path *out* of this state. If @a resolve_text is true then
* any text conflict is resolved, if @a resolve_props is true then any
* property conflicts are resolved. If @a recursive is true, then search
* recursively for conflicts to resolve.
*
* @a adm_access is an access baton, with a write lock, for @a path.
*
* Needless to say, this function doesn't touch conflict markers or
* anything of that sort -- only a human can semantically resolve a
* conflict. Instead, this function simply marks a file as "having
* been resolved", clearing the way for a commit.
*
* The implementation details are opaque, as our "conflicted" criteria
* might change over time. (At the moment, this routine removes the
* three fulltext 'backup' files and any .prej file created in a conflict,
* and modifies @a path's entry.)
*
* If @a path is not under version control, return @c SVN_ERR_ENTRY_NOT_FOUND.
* If @a path isn't in a state of conflict to begin with, do nothing, and
* return @c SVN_NO_ERROR.
*
* If @c path was successfully taken out of a state of conflict, report this
* information to @c notify_func (if non-@c NULL.) If only text or only
* property conflict resolution was requested, and it was successful, then
* success gets reported.
*/
svn_error_t *svn_wc_resolved_conflict (const char *path,
svn_wc_adm_access_t *adm_access,
svn_boolean_t resolve_text,
svn_boolean_t resolve_props,
svn_boolean_t recursive,
svn_wc_notify_func_t notify_func,
void *notify_baton,
apr_pool_t *pool);
/* Commits. */
/** Bump a successfully committed absolute @a path to @a new_revnum after a
* commit succeeds. @a rev_date and @a rev_author are the (server-side)
* date and author of the new revision; one or both may be @c NULL.
* @a adm_access must hold a write lock appropriate for @a path.
*
* If non-null, @a wcprops is an array of <tt>svn_prop_t *</tt> changes to
* wc properties; if an @c svn_prop_t->value is null, then that property is
* deleted.
*
* If @a recurse is true and @a path is a directory, then bump every
* versioned object at or under @a path. This is usually done for
* copied trees.
*/
svn_error_t *svn_wc_process_committed (const char *path,
svn_wc_adm_access_t *adm_access,
svn_boolean_t recurse,
svn_revnum_t new_revnum,
const char *rev_date,
const char *rev_author,
apr_array_header_t *wcprop_changes,
apr_pool_t *pool);
/** Do a depth-first crawl in a working copy, beginning at @a path.
*
* Communicate the `state' of the working copy's revisions to
* @a reporter/@a report_baton. Obviously, if @a path is a file instead
* of a directory, this depth-first crawl will be a short one.
*
* No locks are or logs are created, nor are any animals harmed in the
* process. No cleanup is necessary. @a adm_access must be an access
* baton for the @a path hierarchy, it does not require a write lock.
*
* After all revisions are reported, @a reporter->finish_report() is
* called, which immediately causes the RA layer to update the working
* copy. Thus the return value may very well reflect the result of
* the update!
*
* If @a restore_files is true, then unexpectedly missing working files
* will be restored from the administrative directory's cache. For each
* file restored, the @a notify_func function will be called with the
* @a notify_baton and the path of the restored file. @a notify_func may
* be @c NULL if this notification is not required. If @a
* use_commit_times is true, then set restored files' timestamps to
* their last-commit-times.
*
* If @a traversal_info is non-null, then record pre-update traversal
* state in it. (Caller should obtain @a traversal_info from
* @c svn_wc_init_traversal_info.)
*/
svn_error_t *
svn_wc_crawl_revisions (const char *path,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -