📄 svn_wc.h
字号:
/** Given a @a dir_path under version control, decide if one of its
* entries (@a entry) is in state of conflict; return the answers in
* @a text_conflicted_p and @a prop_conflicted_p.
*
* (If the entry mentions that a .rej or .prej exist, but they are
* both removed, assume the conflict has been resolved by the user.)
*/
svn_error_t *svn_wc_conflicted_p (svn_boolean_t *text_conflicted_p,
svn_boolean_t *prop_conflicted_p,
const char *dir_path,
const svn_wc_entry_t *entry,
apr_pool_t *pool);
/** Set @a *url and @a *rev to the ancestor URL and revision for @a path,
* allocating in @a pool. @a adm_access must be an access baton for @a path.
*
* If @a url or @a rev is null, then ignore it (just don't return the
* corresponding information).
*/
svn_error_t *svn_wc_get_ancestry (char **url,
svn_revnum_t *rev,
const char *path,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool);
/** A callback vtable invoked by the generic entry-walker function. */
typedef struct svn_wc_entry_callbacks_t
{
/** An @a entry was found at @a path. */
svn_error_t *(*found_entry) (const char *path,
const svn_wc_entry_t *entry,
void *walk_baton,
apr_pool_t *pool);
/* ### add more callbacks as new callers need them. */
} svn_wc_entry_callbacks_t;
/** A generic entry-walker.
*
* Do a recursive depth-first entry-walk beginning on @a path, which can
* be a file or dir. Call callbacks in @a walk_callbacks, passing
* @a walk_baton to each. Use @a pool for looping, recursion, and to
* allocate all entries returned. @a adm_access must be an access baton
* for @a path.
*
* Like our other entries interfaces, entries that are in a 'deleted'
* or 'absent' state (and not scheduled for re-addition) are not
* discovered, unless @a show_hidden is true.
*
* When a new directory is entered, @c SVN_WC_ENTRY_THIS_DIR will always
* be returned first.
*
* Note: callers should be aware that each directory will be
* returned *twice*: first as an entry within its parent, and
* subsequently as the '.' entry within itself. The two calls can be
* distinguished by looking for @c SVN_WC_ENTRY_THIS_DIR in the 'name'
* field of the entry.
*/
svn_error_t *svn_wc_walk_entries (const char *path,
svn_wc_adm_access_t *adm_access,
const svn_wc_entry_callbacks_t
*walk_callbacks,
void *walk_baton,
svn_boolean_t show_hidden,
apr_pool_t *pool);
/** Mark missing @a path as 'deleted' in its @a parent's list of entries.
*
* Return @c SVN_ERR_WC_PATH_FOUND if @a path isn't actually missing.
*/
svn_error_t *svn_wc_mark_missing_deleted (const char *path,
svn_wc_adm_access_t *parent,
apr_pool_t *pool);
/** Ensure that an administrative area exists for @a path, so that @a
* path is a working copy subdir based on @a url at @a revision, and
* with repository UUID @a uuid.
*
* If the administrative area does not exist then it will be created and
* initialized to an unlocked state.
*
* If the administrative area already exists then the given @a url
* must match the URL in the administrative area or an error will be
* returned. The given @a revision must also match except for the
* special case of adding a directory that has a name matching one
* scheduled for deletion, in which case @a revision must be zero.
*
* @a uuid may be @c NULL.
* Do not ensure existence of @a path itself; if @a path does not
* exist, return error.
*/
svn_error_t *svn_wc_ensure_adm (const char *path,
const char *uuid,
const char *url,
svn_revnum_t revision,
apr_pool_t *pool);
/**
* @defgroup svn_wc_status working copy status.
* @{
*
* We have two functions for getting working copy status: one function
* for getting the status of exactly one thing, and another for
* getting the statuses of (potentially) multiple things.
*
* The WebDAV concept of "depth" may be useful in understanding the
* motivation behind this. Suppose we're getting the status of
* directory D. The three depth levels would mean
*
* depth 0: D itself (just the named directory)
* depth 1: D and its immediate children (D + its entries)
* depth Infinity: D and all its descendants (full recursion)
*
* To offer all three levels, we could have one unified function,
* taking a `depth' parameter. Unfortunately, because this function
* would have to handle multiple return values as well as the single
* return value case, getting the status of just one entity would
* become cumbersome: you'd have to roll through a hash to find one
* lone status.
*
* So we have @c svn_wc_status() for depth 0, and
* @c svn_wc_get_status_editor() for depths 1 and 2, since the latter
* two involve multiple return values.
*
* NOTE: The status structures may contain a @c NULL ->entry field.
* This indicates an item that is not versioned in the working copy.
*/
enum svn_wc_status_kind
{
/** does not exist */
svn_wc_status_none = 1,
/** is not a versioned thing in this wc */
svn_wc_status_unversioned,
/** exists, but uninteresting. */
svn_wc_status_normal,
/** is scheduled for addition */
svn_wc_status_added,
/** under v.c., but is missing */
svn_wc_status_missing,
/** scheduled for deletion */
svn_wc_status_deleted,
/** was deleted and then re-added */
svn_wc_status_replaced,
/** text or props have been modified */
svn_wc_status_modified,
/** local mods received repos mods */
svn_wc_status_merged,
/** local mods received conflicting repos mods */
svn_wc_status_conflicted,
/** a resource marked as ignored */
svn_wc_status_ignored,
/** an unversioned resource is in the way of the versioned resource */
svn_wc_status_obstructed,
/** an unversioned path populated by an svn:external property */
svn_wc_status_external,
/** a directory doesn't contain a complete entries list */
svn_wc_status_incomplete
};
/** Structure for holding the "status" of a working copy item.
*
* The item's entry data is in @a entry, augmented and possibly shadowed
* by the other fields. @a entry is @c NULL if this item is not under
* version control.
*/
typedef struct svn_wc_status_t
{
/** Can be @c NULL if not under version control. */
svn_wc_entry_t *entry;
/** The status of the entries text. */
enum svn_wc_status_kind text_status;
/** The status of the entries properties. */
enum svn_wc_status_kind prop_status;
/** a directory can be 'locked' if a working copy update was interrupted. */
svn_boolean_t locked;
/** a file or directory can be 'copied' if it's scheduled for
* addition-with-history (or part of a subtree that is scheduled as such.).
*/
svn_boolean_t copied;
/** a file or directory can be 'switched' if the switch command has been
* used.
*/
svn_boolean_t switched;
/** The entry's text status in the repository. */
enum svn_wc_status_kind repos_text_status;
/** The entry's property status in the repository. */
enum svn_wc_status_kind repos_prop_status;
} svn_wc_status_t;
/** Return a deep copy of the @a orig_stat status structure, allocated
* in @a pool.
*/
svn_wc_status_t *svn_wc_dup_status (svn_wc_status_t *orig_stat,
apr_pool_t *pool);
/** Fill @a *status for @a path, allocating in @a pool, with the exception
* of the @c repos_rev field, which is normally filled in by the caller.
* @a adm_access must be an access baton for @a path.
*
* Here are some things to note about the returned structure. A quick
* examination of the @c status->text_status after a successful return of
* this function can reveal the following things:
*
* - @c svn_wc_status_none : @a path is not versioned, and is either not
* present on disk, or is ignored by svn's
* default ignore regular expressions or the
* svn:ignore property setting for @a path's
* parent directory.
*
* - @c svn_wc_status_missing : @a path is versioned, but is missing from
* the working copy.
*
* - @c svn_wc_status_unversioned : @a path is not versioned, but is
* present on disk and not being
* ignored (see above).
*
* The other available results for the @c text_status field are more
* straightforward in their meanings. See the comments on the
* @c svn_wc_status_kind structure above for some hints.
*/
svn_error_t *svn_wc_status (svn_wc_status_t **status,
const char *path,
svn_wc_adm_access_t *adm_access,
apr_pool_t *pool);
/** A callback for reporting an @c svn_wc_status_t * item @a status
for @a path. @a baton is provided to the */
typedef void (*svn_wc_status_func_t) (void *baton,
const char *path,
svn_wc_status_t *status);
/** Set @a *editor and @a *edit_baton to an editor that generates @c
* svn_wc_status_t structures and sends them through @a status_func /
* @a status_baton. @a anchor is an access baton, with a tree lock,
* for the local path to the working copy which will be used as the
* root of our editor. If @a target is not empty, it represents an
* entry in the @a anchor path which is the subject of the editor
* drive (otherwise, the @a anchor is the subject).
*
* Callers drive this editor to describe working copy out-of-dateness
* with respect to the repository. If this information is not
* available or not desired, callers should simply call the
* close_edit() function of the @a editor vtable.
*
* If the editor driver calls @a editor's set_target_revision() vtable
* function, then when the edit drive is completed, @a *edit_revision
* will contain the revision delivered via that interface, and any
* status items reported during the drive will have their @c repos_rev
* field set to this same revision.
*
* @a config is a hash mapping @c SVN_CONFIG_CATEGORY's to @c
* svn_config_t's.
*
* Assuming the target is a directory, then:
*
* - If @a get_all is false, then only locally-modified entries will be
* returned. If true, then all entries will be returned.
*
* - If @a descend is false, status structures will be returned only
* for the target and its immediate children. Otherwise, this
* operation is fully recursive.
*
* If @a no_ignore is set, statuses that would typically be ignored
* will instead be reported.
*
* If @a cancel_func is non-null, call it with @a cancel_baton while building
* the @a statushash to determine if the client has cancelled the operation.
*
* 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.)
*
* Allocate the editor itself in @a pool, but the editor does temporary
* allocations in a subpool of @a pool.
*/
svn_error_t *svn_wc_get_status_editor (const svn_delta_editor_t **editor,
void **edit_baton,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -